# Copyright (c) 2012-2022, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, integer
from .validators.codebuild import (
validate_artifacts,
validate_credentials_provider,
validate_environment,
validate_environment_variable,
validate_environmentvariable_or_list,
validate_image_pull_credentials,
validate_project_cache,
validate_project_triggers,
validate_projectfilesystemlocation_type,
validate_source,
validate_source_auth,
validate_status,
validate_webhookfilter_type,
)
[docs]class Fleet(AWSObject):
"""
`Fleet <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html>`__
"""
resource_type = "AWS::CodeBuild::Fleet"
props: PropsDictType = {
"BaseCapacity": (integer, False),
"ComputeType": (str, False),
"EnvironmentType": (str, False),
"Name": (str, False),
"Tags": (Tags, False),
}
[docs]class Artifacts(AWSProperty):
"""
`Artifacts <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html>`__
"""
props: PropsDictType = {
"ArtifactIdentifier": (str, False),
"EncryptionDisabled": (boolean, False),
"Location": (str, False),
"Name": (str, False),
"NamespaceType": (str, False),
"OverrideArtifactName": (boolean, False),
"Packaging": (str, False),
"Path": (str, False),
"Type": (str, True),
}
[docs] def validate(self):
validate_artifacts(self)
[docs]class EnvironmentVariable(AWSProperty):
"""
`EnvironmentVariable <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html>`__
"""
props: PropsDictType = {
"Name": (str, True),
"Type": (str, False),
"Value": (str, True),
}
[docs] def validate(self):
validate_environment_variable(self)
[docs]class ProjectFleet(AWSProperty):
"""
`ProjectFleet <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfleet.html>`__
"""
props: PropsDictType = {
"FleetArn": (str, False),
}
[docs]class RegistryCredential(AWSProperty):
"""
`RegistryCredential <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html>`__
"""
props: PropsDictType = {
"Credential": (str, True),
"CredentialProvider": (validate_credentials_provider, True),
}
[docs]class Environment(AWSProperty):
"""
`Environment <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html>`__
"""
props: PropsDictType = {
"Certificate": (str, False),
"ComputeType": (str, True),
"EnvironmentVariables": (validate_environmentvariable_or_list, False),
"Fleet": (ProjectFleet, False),
"Image": (str, True),
"ImagePullCredentialsType": (validate_image_pull_credentials, False),
"PrivilegedMode": (boolean, False),
"RegistryCredential": (RegistryCredential, False),
"Type": (str, True),
}
[docs] def validate(self):
validate_environment(self)
[docs]class CloudWatchLogs(AWSProperty):
"""
`CloudWatchLogs <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html>`__
"""
props: PropsDictType = {
"GroupName": (str, False),
"Status": (validate_status, True),
"StreamName": (str, False),
}
[docs]class S3Logs(AWSProperty):
"""
`S3Logs <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-s3logsconfig.html>`__
"""
props: PropsDictType = {
"EncryptionDisabled": (boolean, False),
"Location": (str, False),
"Status": (validate_status, True),
}
[docs]class LogsConfig(AWSProperty):
"""
`LogsConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-logsconfig.html>`__
"""
props: PropsDictType = {
"CloudWatchLogs": (CloudWatchLogs, False),
"S3Logs": (S3Logs, False),
}
[docs]class BatchRestrictions(AWSProperty):
"""
`BatchRestrictions <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-batchrestrictions.html>`__
"""
props: PropsDictType = {
"ComputeTypesAllowed": ([str], False),
"MaximumBuildsAllowed": (integer, False),
}
[docs]class ProjectBuildBatchConfig(AWSProperty):
"""
`ProjectBuildBatchConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html>`__
"""
props: PropsDictType = {
"BatchReportMode": (str, False),
"CombineArtifacts": (boolean, False),
"Restrictions": (BatchRestrictions, False),
"ServiceRole": (str, False),
"TimeoutInMins": (integer, False),
}
[docs]class ProjectCache(AWSProperty):
"""
`ProjectCache <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html>`__
"""
props: PropsDictType = {
"Location": (str, False),
"Modes": ([str], False),
"Type": (str, True),
}
[docs] def validate(self):
validate_project_cache(self)
[docs]class ProjectFileSystemLocation(AWSProperty):
"""
`ProjectFileSystemLocation <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html>`__
"""
props: PropsDictType = {
"Identifier": (str, True),
"Location": (str, True),
"MountOptions": (str, False),
"MountPoint": (str, True),
"Type": (validate_projectfilesystemlocation_type, True),
}
[docs]class ProjectSourceVersion(AWSProperty):
"""
`ProjectSourceVersion <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectsourceversion.html>`__
"""
props: PropsDictType = {
"SourceIdentifier": (str, True),
"SourceVersion": (str, False),
}
[docs]class ProjectTriggers(AWSProperty):
"""
`ProjectTriggers <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html>`__
"""
props: PropsDictType = {
"BuildType": (str, False),
"FilterGroups": (list, False),
"Webhook": (boolean, False),
}
[docs] def validate(self):
validate_project_triggers(self)
[docs]class BuildStatusConfig(AWSProperty):
"""
`BuildStatusConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html>`__
"""
props: PropsDictType = {
"Context": (str, False),
"TargetUrl": (str, False),
}
[docs]class GitSubmodulesConfig(AWSProperty):
"""
`GitSubmodulesConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-gitsubmodulesconfig.html>`__
"""
props: PropsDictType = {
"FetchSubmodules": (boolean, True),
}
[docs]class SourceAuth(AWSProperty):
"""
`SourceAuth <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html>`__
"""
props: PropsDictType = {
"Resource": (str, False),
"Type": (str, True),
}
[docs] def validate(self):
validate_source_auth(self)
[docs]class Source(AWSProperty):
"""
`Source <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html>`__
"""
props: PropsDictType = {
"Auth": (SourceAuth, False),
"BuildSpec": (str, False),
"BuildStatusConfig": (BuildStatusConfig, False),
"GitCloneDepth": (integer, False),
"GitSubmodulesConfig": (GitSubmodulesConfig, False),
"InsecureSsl": (boolean, False),
"Location": (str, False),
"ReportBuildStatus": (boolean, False),
"SourceIdentifier": (str, False),
"Type": (str, True),
}
[docs] def validate(self):
validate_source(self)
[docs]class VpcConfig(AWSProperty):
"""
`VpcConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html>`__
"""
props: PropsDictType = {
"SecurityGroupIds": ([str], False),
"Subnets": ([str], False),
"VpcId": (str, False),
}
[docs]class Project(AWSObject):
"""
`Project <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html>`__
"""
resource_type = "AWS::CodeBuild::Project"
props: PropsDictType = {
"Artifacts": (Artifacts, True),
"BadgeEnabled": (boolean, False),
"BuildBatchConfig": (ProjectBuildBatchConfig, False),
"Cache": (ProjectCache, False),
"ConcurrentBuildLimit": (integer, False),
"Description": (str, False),
"EncryptionKey": (str, False),
"Environment": (Environment, True),
"FileSystemLocations": ([ProjectFileSystemLocation], False),
"LogsConfig": (LogsConfig, False),
"Name": (str, False),
"QueuedTimeoutInMinutes": (integer, False),
"ResourceAccessRole": (str, False),
"SecondaryArtifacts": ([Artifacts], False),
"SecondarySourceVersions": ([ProjectSourceVersion], False),
"SecondarySources": ([Source], False),
"ServiceRole": (str, True),
"Source": (Source, True),
"SourceVersion": (str, False),
"Tags": (Tags, False),
"TimeoutInMinutes": (integer, False),
"Triggers": (ProjectTriggers, False),
"Visibility": (str, False),
"VpcConfig": (VpcConfig, False),
}
[docs]class S3ReportExportConfig(AWSProperty):
"""
`S3ReportExportConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html>`__
"""
props: PropsDictType = {
"Bucket": (str, True),
"BucketOwner": (str, False),
"EncryptionDisabled": (boolean, False),
"EncryptionKey": (str, False),
"Packaging": (str, False),
"Path": (str, False),
}
[docs]class ReportExportConfig(AWSProperty):
"""
`ReportExportConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-reportexportconfig.html>`__
"""
props: PropsDictType = {
"ExportConfigType": (str, True),
"S3Destination": (S3ReportExportConfig, False),
}
[docs]class ReportGroup(AWSObject):
"""
`ReportGroup <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html>`__
"""
resource_type = "AWS::CodeBuild::ReportGroup"
props: PropsDictType = {
"DeleteReports": (boolean, False),
"ExportConfig": (ReportExportConfig, True),
"Name": (str, False),
"Tags": (Tags, False),
"Type": (str, True),
}
[docs]class SourceCredential(AWSObject):
"""
`SourceCredential <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-sourcecredential.html>`__
"""
resource_type = "AWS::CodeBuild::SourceCredential"
props: PropsDictType = {
"AuthType": (str, True),
"ServerType": (str, True),
"Token": (str, True),
"Username": (str, False),
}
[docs]class WebhookFilter(AWSProperty):
"""
`WebhookFilter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-webhookfilter.html>`__
"""
props: PropsDictType = {
"ExcludeMatchedPattern": (boolean, False),
"Pattern": (str, True),
"Type": (validate_webhookfilter_type, True),
}