From a6027c527caa248046a46101b3b304d9be793963 Mon Sep 17 00:00:00 2001 From: Chris Rehn Date: Fri, 18 Nov 2022 12:59:43 -0800 Subject: [PATCH] Add schema types to Application --- samtranslator/schema/schema.json | 49 ++++++++++++++++++++++++++++++-- samtranslator/schema/schema.py | 18 ++++++++---- 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/samtranslator/schema/schema.json b/samtranslator/schema/schema.json index 8ba56789bf..f26b4cbf8e 100644 --- a/samtranslator/schema/schema.json +++ b/samtranslator/schema/schema.json @@ -843,12 +843,53 @@ ], "additionalProperties": false }, + "ApplicationLocation": { + "title": "ApplicationLocation", + "type": "object", + "properties": { + "ApplicationId": { + "title": "Applicationid", + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "SemanticVersion": { + "title": "Semanticversion", + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + }, + "required": [ + "ApplicationId", + "SemanticVersion" + ], + "additionalProperties": false + }, "ApplicationProperties": { "title": "ApplicationProperties", "type": "object", "properties": { "Location": { - "title": "Location" + "title": "Location", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/ApplicationLocation" + } + ] }, "NotificationARNs": { "title": "Notificationarns" @@ -857,12 +898,16 @@ "title": "Parameters" }, "Tags": { - "title": "Tags" + "title": "Tags", + "type": "object" }, "TimeoutInMinutes": { "title": "Timeoutinminutes" } }, + "required": [ + "Location" + ], "additionalProperties": false }, "AwsServerlessApplication": { diff --git a/samtranslator/schema/schema.py b/samtranslator/schema/schema.py index f267473627..f030640f7a 100644 --- a/samtranslator/schema/schema.py +++ b/samtranslator/schema/schema.py @@ -13,6 +13,9 @@ # Value passed directly to CloudFormation; not used by SAM PassThrough = Any +# Intrinsic resolvable by the SAM transform +SamIntrinsic = Dict[str, Any] + # By default strict # https://pydantic-docs.helpmanual.io/usage/model_config/#change-behaviour-globally class BaseModel(LenientBaseModel): @@ -209,12 +212,17 @@ class AwsServerlessHttpApi(BaseModel): Condition: Unknown +class ApplicationLocation(BaseModel): + ApplicationId: Union[str, SamIntrinsic] + SemanticVersion: Union[str, SamIntrinsic] + + class ApplicationProperties(BaseModel): - Location: Unknown - NotificationARNs: Unknown - Parameters: Unknown - Tags: Unknown - TimeoutInMinutes: Unknown + Location: Union[str, ApplicationLocation] + NotificationARNs: Optional[PassThrough] + Parameters: Optional[PassThrough] + Tags: Optional[Dict[str, Any]] + TimeoutInMinutes: Optional[PassThrough] class AwsServerlessApplication(BaseModel):