From d45d5a56f424ae1966e3b50704ba597baa5f3ec4 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:03:50 -0500 Subject: [PATCH 01/42] Add `prefect-bitbucket` `v0.3.3` to block records --- .../prefect-bitbucket/blocks/v0.3.3.json | 237 ++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 collections/prefect-bitbucket/blocks/v0.3.3.json diff --git a/collections/prefect-bitbucket/blocks/v0.3.3.json b/collections/prefect-bitbucket/blocks/v0.3.3.json new file mode 100644 index 000000000..528a9f8c6 --- /dev/null +++ b/collections/prefect-bitbucket/blocks/v0.3.3.json @@ -0,0 +1,237 @@ +{ + "prefect-bitbucket": { + "block_types": { + "bitbucket-credentials": { + "name": "BitBucket Credentials", + "slug": "bitbucket-credentials", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/5d729f7355fb6828c4b605268ded9cfafab3ae4f-250x250.png", + "documentation_url": null, + "description": "Store BitBucket credentials to interact with private BitBucket repositories. This block is part of the prefect-bitbucket collection. Install prefect-bitbucket with `pip install prefect-bitbucket` to use this block.", + "code_example": "Load stored BitBucket credentials:\n```python\nfrom prefect_bitbucket import BitBucketCredentials\nbitbucket_credentials_block = BitBucketCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:572e01685325337fd902c9074df750e16e1622fe3ab7a06231243fb6712aa6fc", + "fields": { + "block_schema_references": {}, + "block_type_slug": "bitbucket-credentials", + "description": "Store BitBucket credentials to interact with private BitBucket repositories.", + "properties": { + "token": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A BitBucket Personal Access Token - required for private repositories.", + "examples": [ + "x-token-auth:my-token" + ], + "title": "Personal Access Token" + }, + "username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Identification name unique across entire BitBucket site.", + "title": "Username" + }, + "password": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The password to authenticate to BitBucket.", + "title": "Password" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The base URL of a BitBucket instance. Leave blank for BitBucket Cloud.", + "examples": [ + "https://api.bitbucket.org/" + ], + "title": "URL" + } + }, + "secret_fields": [ + "token", + "password" + ], + "title": "BitBucketCredentials", + "type": "object" + }, + "capabilities": [], + "version": "0.3.3" + } + }, + "bitbucket-repository": { + "name": "BitBucket Repository", + "slug": "bitbucket-repository", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/5d729f7355fb6828c4b605268ded9cfafab3ae4f-250x250.png", + "documentation_url": null, + "description": "Interact with files stored in BitBucket repositories. This block is part of the prefect-bitbucket collection. Install prefect-bitbucket with `pip install prefect-bitbucket` to use this block.", + "code_example": "```python\nfrom prefect_bitbucket.repository import BitBucketRepository\n\nbitbucket_repository_block = BitBucketRepository.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:d05835c8a5f5e35ccd317457c435637a1b50691a1761065c8fa8c856a90f2674", + "fields": { + "block_schema_references": { + "bitbucket_credentials": { + "block_schema_checksum": "sha256:572e01685325337fd902c9074df750e16e1622fe3ab7a06231243fb6712aa6fc", + "block_type_slug": "bitbucket-credentials" + } + }, + "block_type_slug": "bitbucket-repository", + "description": "Interact with files stored in BitBucket repositories.", + "properties": { + "repository": { + "description": "The URL of a BitBucket repository to read from in HTTPS format", + "title": "Repository", + "type": "string" + }, + "reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional reference to pin to; can be a branch or tag.", + "title": "Reference" + }, + "bitbucket_credentials": { + "anyOf": [ + { + "$ref": "#/definitions/BitBucketCredentials" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional BitBucketCredentials block for authenticating with private BitBucket repos." + } + }, + "required": [ + "repository" + ], + "secret_fields": [ + "bitbucket_credentials.token", + "bitbucket_credentials.password" + ], + "title": "BitBucketRepository", + "type": "object", + "definitions": { + "BitBucketCredentials": { + "block_schema_references": {}, + "block_type_slug": "bitbucket-credentials", + "description": "Store BitBucket credentials to interact with private BitBucket repositories.", + "properties": { + "token": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A BitBucket Personal Access Token - required for private repositories.", + "examples": [ + "x-token-auth:my-token" + ], + "title": "Personal Access Token" + }, + "username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Identification name unique across entire BitBucket site.", + "title": "Username" + }, + "password": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The password to authenticate to BitBucket.", + "title": "Password" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The base URL of a BitBucket instance. Leave blank for BitBucket Cloud.", + "examples": [ + "https://api.bitbucket.org/" + ], + "title": "URL" + } + }, + "secret_fields": [ + "token", + "password" + ], + "title": "BitBucketCredentials", + "type": "object" + } + } + }, + "capabilities": [ + "get-directory" + ], + "version": "0.3.3" + } + } + } + } +} \ No newline at end of file From f1d1db0215b72c7141025d7b901b6303570312f3 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:03:51 -0500 Subject: [PATCH 02/42] Update aggregate block metadata with `prefect-bitbucket` `v0.3.3` --- views/aggregate-block-metadata.json | 201 +++++++++++++++++++--------- 1 file changed, 141 insertions(+), 60 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 908d4345a..3142edb00 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -2814,49 +2814,84 @@ "description": "Store BitBucket credentials to interact with private BitBucket repositories. This block is part of the prefect-bitbucket collection. Install prefect-bitbucket with `pip install prefect-bitbucket` to use this block.", "code_example": "Load stored BitBucket credentials:\n```python\nfrom prefect_bitbucket import BitBucketCredentials\nbitbucket_credentials_block = BitBucketCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:ef96bdc56cde651f152e3f8938018d53d725b25b5ae98777872c0962250ba0fc", + "checksum": "sha256:572e01685325337fd902c9074df750e16e1622fe3ab7a06231243fb6712aa6fc", "fields": { - "title": "BitBucketCredentials", + "block_schema_references": {}, + "block_type_slug": "bitbucket-credentials", "description": "Store BitBucket credentials to interact with private BitBucket repositories.", - "type": "object", "properties": { "token": { - "title": "Token", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A BitBucket Personal Access Token - required for private repositories.", - "name": "Personal Access Token", - "example": "x-token-auth:my-token", - "type": "string", - "writeOnly": true, - "format": "password" + "examples": [ + "x-token-auth:my-token" + ], + "title": "Personal Access Token" }, "username": { - "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Identification name unique across entire BitBucket site.", - "type": "string" + "title": "Username" }, "password": { - "title": "Password", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "The password to authenticate to BitBucket.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Password" }, "url": { - "title": "URL", - "description": "The base URL of your BitBucket instance.", - "default": "https://api.bitbucket.org/", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The base URL of a BitBucket instance. Leave blank for BitBucket Cloud.", + "examples": [ + "https://api.bitbucket.org/" + ], + "title": "URL" } }, - "block_type_slug": "bitbucket-credentials", "secret_fields": [ "token", "password" ], - "block_schema_references": {} + "title": "BitBucketCredentials", + "type": "object" }, "capabilities": [], - "version": "0.2.2" + "version": "0.3.3" } }, "bitbucket-repository": { @@ -2867,93 +2902,139 @@ "description": "Interact with files stored in BitBucket repositories. This block is part of the prefect-bitbucket collection. Install prefect-bitbucket with `pip install prefect-bitbucket` to use this block.", "code_example": "```python\nfrom prefect_bitbucket.repository import BitBucketRepository\n\nbitbucket_repository_block = BitBucketRepository.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:b159a8f21358b694f13fb67b73f20bf3f8b74138940fc0f16ab08107e78d5237", + "checksum": "sha256:d05835c8a5f5e35ccd317457c435637a1b50691a1761065c8fa8c856a90f2674", "fields": { - "title": "BitBucketRepository", + "block_schema_references": { + "bitbucket_credentials": { + "block_schema_checksum": "sha256:572e01685325337fd902c9074df750e16e1622fe3ab7a06231243fb6712aa6fc", + "block_type_slug": "bitbucket-credentials" + } + }, + "block_type_slug": "bitbucket-repository", "description": "Interact with files stored in BitBucket repositories.", - "type": "object", "properties": { "repository": { - "title": "Repository", "description": "The URL of a BitBucket repository to read from in HTTPS format", + "title": "Repository", "type": "string" }, "reference": { - "title": "Reference", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "An optional reference to pin to; can be a branch or tag.", - "type": "string" + "title": "Reference" }, "bitbucket_credentials": { - "title": "Bitbucket Credentials", - "description": "An optional BitBucketCredentials block for authenticating with private BitBucket repos.", - "allOf": [ + "anyOf": [ { "$ref": "#/definitions/BitBucketCredentials" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "An optional BitBucketCredentials block for authenticating with private BitBucket repos." } }, "required": [ "repository" ], - "block_type_slug": "bitbucket-repository", "secret_fields": [ "bitbucket_credentials.token", "bitbucket_credentials.password" ], - "block_schema_references": { - "bitbucket_credentials": { - "block_type_slug": "bitbucket-credentials", - "block_schema_checksum": "sha256:ef96bdc56cde651f152e3f8938018d53d725b25b5ae98777872c0962250ba0fc" - } - }, + "title": "BitBucketRepository", + "type": "object", "definitions": { "BitBucketCredentials": { - "title": "BitBucketCredentials", + "block_schema_references": {}, + "block_type_slug": "bitbucket-credentials", "description": "Store BitBucket credentials to interact with private BitBucket repositories.", - "type": "object", "properties": { "token": { - "title": "Token", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A BitBucket Personal Access Token - required for private repositories.", - "name": "Personal Access Token", - "example": "x-token-auth:my-token", - "type": "string", - "writeOnly": true, - "format": "password" + "examples": [ + "x-token-auth:my-token" + ], + "title": "Personal Access Token" }, "username": { - "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Identification name unique across entire BitBucket site.", - "type": "string" + "title": "Username" }, "password": { - "title": "Password", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "The password to authenticate to BitBucket.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Password" }, "url": { - "title": "URL", - "description": "The base URL of your BitBucket instance.", - "default": "https://api.bitbucket.org/", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The base URL of a BitBucket instance. Leave blank for BitBucket Cloud.", + "examples": [ + "https://api.bitbucket.org/" + ], + "title": "URL" } }, - "block_type_slug": "bitbucket-credentials", "secret_fields": [ "token", "password" ], - "block_schema_references": {} + "title": "BitBucketCredentials", + "type": "object" } } }, "capabilities": [ "get-directory" ], - "version": "0.2.2" + "version": "0.3.3" } } } From d08d7431cf356ffe539191e783c32cbf2770853a Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:03:53 -0500 Subject: [PATCH 03/42] Add `prefect-bitbucket` `v0.3.3` to worker records --- collections/prefect-bitbucket/workers/v0.3.3.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-bitbucket/workers/v0.3.3.json diff --git a/collections/prefect-bitbucket/workers/v0.3.3.json b/collections/prefect-bitbucket/workers/v0.3.3.json new file mode 100644 index 000000000..6909d9047 --- /dev/null +++ b/collections/prefect-bitbucket/workers/v0.3.3.json @@ -0,0 +1,3 @@ +{ + "prefect-bitbucket": {} +} \ No newline at end of file From 30eb0b551e211f802cd7b268abf6d2de666743c6 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:04:26 -0500 Subject: [PATCH 04/42] Add `prefect-dask` `v0.3.6` to block records --- collections/prefect-dask/blocks/v0.3.6.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 collections/prefect-dask/blocks/v0.3.6.json diff --git a/collections/prefect-dask/blocks/v0.3.6.json b/collections/prefect-dask/blocks/v0.3.6.json new file mode 100644 index 000000000..b0cd169a3 --- /dev/null +++ b/collections/prefect-dask/blocks/v0.3.6.json @@ -0,0 +1,5 @@ +{ + "prefect-dask": { + "block_types": {} + } +} \ No newline at end of file From fc0c0eceb64378761716ab82b0b6fcd3453e9571 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:04:27 -0500 Subject: [PATCH 05/42] Update aggregate block metadata with `prefect-dask` `v0.3.6` From f599b163be3732ff08683dc7931a31056ad57ef4 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:04:28 -0500 Subject: [PATCH 06/42] Add `prefect-dask` `v0.3.6` to worker records --- collections/prefect-dask/workers/v0.3.6.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-dask/workers/v0.3.6.json diff --git a/collections/prefect-dask/workers/v0.3.6.json b/collections/prefect-dask/workers/v0.3.6.json new file mode 100644 index 000000000..fc14a6199 --- /dev/null +++ b/collections/prefect-dask/workers/v0.3.6.json @@ -0,0 +1,3 @@ +{ + "prefect-dask": {} +} \ No newline at end of file From bbf7057ca9920bbb147fb2da1944a010374e7d27 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:00 -0500 Subject: [PATCH 07/42] Add `prefect` `v3.5.0` to block records --- collections/prefect/blocks/v3.5.0.json | 1257 ++++++++++++++++++++++++ 1 file changed, 1257 insertions(+) create mode 100644 collections/prefect/blocks/v3.5.0.json diff --git a/collections/prefect/blocks/v3.5.0.json b/collections/prefect/blocks/v3.5.0.json new file mode 100644 index 000000000..e88651171 --- /dev/null +++ b/collections/prefect/blocks/v3.5.0.json @@ -0,0 +1,1257 @@ +{ + "prefect": { + "block_types": { + "date-time": { + "name": "Date Time", + "slug": "date-time", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/8b3da9a6621e92108b8e6a75b82e15374e170ff7-48x48.png", + "documentation_url": "https://docs.prefect.io/latest/develop/blocks", + "description": "A block that represents a datetime. Deprecated, please use Variables to store datetime data instead.", + "code_example": "Load a stored JSON value:\n```python\nfrom prefect.blocks.system import DateTime\n\ndata_time_block = DateTime.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:94cacaae861dc63b4fcfef96972d9269bb7cb8897a0591a6fd2ac6d0ee64571f", + "fields": { + "block_schema_references": {}, + "block_type_slug": "date-time", + "description": "A block that represents a datetime. Deprecated, please use Variables to store datetime data instead.", + "properties": { + "value": { + "description": "An ISO 8601-compatible datetime value.", + "format": "date-time", + "title": "Value", + "type": "string" + } + }, + "required": [ + "value" + ], + "secret_fields": [], + "title": "DateTime", + "type": "object" + }, + "capabilities": [], + "version": "3.4.25" + } + }, + "discord-webhook": { + "name": "Discord Webhook", + "slug": "discord-webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/9e94976c80ef925b66d24e5d14f0d47baa6b8f88-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via a provided Discord webhook.", + "code_example": "Load a saved Discord webhook and send a message:\n```python\nfrom prefect.blocks.notifications import DiscordWebhook\n\ndiscord_webhook_block = DiscordWebhook.load(\"BLOCK_NAME\")\n\ndiscord_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:300616b3c36b57f6f2c83874213eec897d55bb4049eedbb76ce9afc4e9f5f8d9", + "fields": { + "block_schema_references": {}, + "block_type_slug": "discord-webhook", + "description": "Enables sending notifications via a provided Discord webhook.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "webhook_id": { + "description": "The first part of 2 tokens provided to you after creating a incoming-webhook.", + "format": "password", + "title": "Webhook Id", + "type": "string", + "writeOnly": true + }, + "webhook_token": { + "description": "The second part of 2 tokens provided to you after creating a incoming-webhook.", + "format": "password", + "title": "Webhook Token", + "type": "string", + "writeOnly": true + }, + "botname": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Identify the name of the bot that should issue the message. If one isn't specified then the default is to just use your account (associated with the incoming-webhook).", + "title": "Bot name" + }, + "tts": { + "default": false, + "description": "Whether to enable Text-To-Speech.", + "title": "Tts", + "type": "boolean" + }, + "include_image": { + "default": false, + "description": "Whether to include an image in-line with the message describing the notification type.", + "title": "Include Image", + "type": "boolean" + }, + "avatar": { + "default": false, + "description": "Whether to override the default discord avatar icon.", + "title": "Avatar", + "type": "boolean" + }, + "avatar_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Over-ride the default discord avatar icon URL. By default this is not set and Apprise chooses the URL dynamically based on the type of message (info, success, warning, or error).", + "title": "Avatar URL" + } + }, + "required": [ + "webhook_id", + "webhook_token" + ], + "secret_fields": [ + "webhook_id", + "webhook_token" + ], + "title": "DiscordWebhook", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "json": { + "name": "JSON", + "slug": "json", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/4fcef2294b6eeb423b1332d1ece5156bf296ff96-48x48.png", + "documentation_url": "https://docs.prefect.io/latest/develop/blocks", + "description": "A block that represents JSON. Deprecated, please use Variables to store JSON data instead.", + "code_example": "Load a stored JSON value:\n```python\nfrom prefect.blocks.system import JSON\n\njson_block = JSON.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:0f01d400eb1ebd964d491132cda72e6a6d843f8ce940397b3dba7be219852106", + "fields": { + "block_schema_references": {}, + "block_type_slug": "json", + "description": "A block that represents JSON. Deprecated, please use Variables to store JSON data instead.", + "properties": { + "value": { + "description": "A JSON-compatible value.", + "title": "Value" + } + }, + "required": [ + "value" + ], + "secret_fields": [], + "title": "JSON", + "type": "object" + }, + "capabilities": [], + "version": "3.4.25" + } + }, + "local-file-system": { + "name": "Local File System", + "slug": "local-file-system", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/ad39089fa66d273b943394a68f003f7a19aa850e-48x48.png", + "documentation_url": "https://docs.prefect.io/latest/develop/results#specifying-a-default-filesystem", + "description": "Store data as a file on a local file system.", + "code_example": "Load stored local file system config:\n```python\nfrom prefect.filesystems import LocalFileSystem\n\nlocal_file_system_block = LocalFileSystem.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:80dd31d7cc72fba9f3005c9692797050a118b5b24f3354df05ec1b7de9f0abbd", + "fields": { + "block_schema_references": {}, + "block_type_slug": "local-file-system", + "description": "Store data as a file on a local file system.", + "properties": { + "basepath": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Default local path for this block to write to.", + "title": "Basepath" + } + }, + "secret_fields": [], + "title": "LocalFileSystem", + "type": "object" + }, + "capabilities": [ + "get-directory", + "put-directory", + "read-path", + "write-path" + ], + "version": "3.4.25" + } + }, + "mattermost-webhook": { + "name": "Mattermost Webhook", + "slug": "mattermost-webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/1350a147130bf82cbc799a5f868d2c0116207736-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via a provided Mattermost webhook.", + "code_example": "Load a saved Mattermost webhook and send a message:\n```python\nfrom prefect.blocks.notifications import MattermostWebhook\n\nmattermost_webhook_block = MattermostWebhook.load(\"BLOCK_NAME\")\n\nmattermost_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:4c3388c861c0d76b7989ee652c6e0894c229afd448fd78b9d8219890681b3be9", + "fields": { + "block_schema_references": {}, + "block_type_slug": "mattermost-webhook", + "description": "Enables sending notifications via a provided Mattermost webhook.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "hostname": { + "description": "The hostname of your Mattermost server.", + "examples": [ + "Mattermost.example.com" + ], + "title": "Hostname", + "type": "string" + }, + "secure": { + "default": false, + "description": "Whether to use secure https connection.", + "title": "Secure", + "type": "boolean" + }, + "token": { + "description": "The token associated with your Mattermost webhook.", + "format": "password", + "title": "Token", + "type": "string", + "writeOnly": true + }, + "botname": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the bot that will send the message.", + "title": "Bot name" + }, + "channels": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The channel(s) you wish to notify.", + "title": "Channels" + }, + "include_image": { + "default": false, + "description": "Whether to include the Apprise status image in the message.", + "title": "Include Image", + "type": "boolean" + }, + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional sub-path specification to append to the hostname.", + "title": "Path" + }, + "port": { + "default": 8065, + "description": "The port of your Mattermost server.", + "title": "Port", + "type": "integer" + } + }, + "required": [ + "hostname", + "token" + ], + "secret_fields": [ + "token" + ], + "title": "MattermostWebhook", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "ms-teams-webhook": { + "name": "Microsoft Teams Webhook", + "slug": "ms-teams-webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/817efe008a57f0a24f3587414714b563e5e23658-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via a provided Microsoft Teams webhook.", + "code_example": "Load a saved Teams webhook and send a message:\n```python\nfrom prefect.blocks.notifications import MicrosoftTeamsWebhook\nteams_webhook_block = MicrosoftTeamsWebhook.load(\"BLOCK_NAME\")\nteams_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:c442ad7eaddcd734e926eead9bca2251fd3cbdcb69c666cea3696b9a60766028", + "fields": { + "block_schema_references": {}, + "block_type_slug": "ms-teams-webhook", + "description": "Enables sending notifications via a provided Microsoft Teams webhook.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "url": { + "description": "The Microsoft Power Automate (Workflows) URL used to send notifications to Teams.", + "examples": [ + "https://prod-NO.LOCATION.logic.azure.com:443/workflows/WFID/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=SIGNATURE" + ], + "format": "password", + "title": "Webhook URL", + "type": "string", + "writeOnly": true + }, + "allow_private_urls": { + "default": true, + "description": "Whether to allow notifications to private URLs. Defaults to True.", + "title": "Allow Private Urls", + "type": "boolean" + }, + "include_image": { + "default": true, + "description": "Include an image with the notification.", + "title": "Include Image", + "type": "boolean" + }, + "wrap": { + "default": true, + "description": "Wrap the notification text.", + "title": "Wrap", + "type": "boolean" + } + }, + "required": [ + "url" + ], + "secret_fields": [ + "url" + ], + "title": "MicrosoftTeamsWebhook", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "opsgenie-webhook": { + "name": "Opsgenie Webhook", + "slug": "opsgenie-webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d8b5bc6244ae6cd83b62ec42f10d96e14d6e9113-280x280.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via a provided Opsgenie webhook.", + "code_example": "Load a saved Opsgenie webhook and send a message:\n```python\nfrom prefect.blocks.notifications import OpsgenieWebhook\nopsgenie_webhook_block = OpsgenieWebhook.load(\"BLOCK_NAME\")\nopsgenie_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:d81bd1efed107d9dab8ffac871c1d5d243da72fc96aa1eb86c79fb406b47f407", + "fields": { + "block_schema_references": {}, + "block_type_slug": "opsgenie-webhook", + "description": "Enables sending notifications via a provided Opsgenie webhook.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "apikey": { + "description": "The API Key associated with your Opsgenie account.", + "format": "password", + "title": "API Key", + "type": "string", + "writeOnly": true + }, + "target_user": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The user(s) you wish to notify.", + "title": "Target User" + }, + "target_team": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The team(s) you wish to notify.", + "title": "Target Team" + }, + "target_schedule": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The schedule(s) you wish to notify.", + "title": "Target Schedule" + }, + "target_escalation": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The escalation(s) you wish to notify.", + "title": "Target Escalation" + }, + "region_name": { + "default": "us", + "description": "The 2-character region code.", + "enum": [ + "us", + "eu" + ], + "title": "Region Name", + "type": "string" + }, + "batch": { + "default": false, + "description": "Notify all targets in batches (instead of individually).", + "title": "Batch", + "type": "boolean" + }, + "tags": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A comma-separated list of tags you can associate with your Opsgenie message.", + "examples": [ + "[\"tag1\", \"tag2\"]" + ], + "title": "Tags" + }, + "priority": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 3, + "description": "The priority to associate with the message. It is on a scale between 1 (LOW) and 5 (EMERGENCY).", + "title": "Priority" + }, + "alias": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The alias to associate with the message.", + "title": "Alias" + }, + "entity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The entity to associate with the message.", + "title": "Entity" + }, + "details": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Additional details composed of key/values pairs.", + "examples": [ + "{\"key1\": \"value1\", \"key2\": \"value2\"}" + ], + "title": "Details" + } + }, + "required": [ + "apikey" + ], + "secret_fields": [ + "apikey" + ], + "title": "OpsgenieWebhook", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "pager-duty-webhook": { + "name": "Pager Duty Webhook", + "slug": "pager-duty-webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/8dbf37d17089c1ce531708eac2e510801f7b3aee-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via a provided PagerDuty webhook.", + "code_example": "Load a saved PagerDuty webhook and send a message:\n```python\nfrom prefect.blocks.notifications import PagerDutyWebHook\npagerduty_webhook_block = PagerDutyWebHook.load(\"BLOCK_NAME\")\npagerduty_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:133ccf80404b874c09cc28c5fca18afb8e6e5409fff1b2615775f5f9b73c878e", + "fields": { + "block_schema_references": {}, + "block_type_slug": "pager-duty-webhook", + "description": "Enables sending notifications via a provided PagerDuty webhook.", + "properties": { + "notify_type": { + "default": "info", + "description": "The severity of the notification.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "integration_key": { + "description": "This can be found on the Events API V2 integration's detail page, and is also referred to as a Routing Key. This must be provided alongside `api_key`, but will error if provided alongside `url`.", + "format": "password", + "title": "Integration Key", + "type": "string", + "writeOnly": true + }, + "api_key": { + "description": "This can be found under Integrations. This must be provided alongside `integration_key`, but will error if provided alongside `url`.", + "format": "password", + "title": "API Key", + "type": "string", + "writeOnly": true + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "Prefect", + "description": "The source string as part of the payload.", + "title": "Source" + }, + "component": { + "default": "Notification", + "description": "The component string as part of the payload.", + "title": "Component", + "type": "string" + }, + "group": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The group string as part of the payload.", + "title": "Group" + }, + "class_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The class string as part of the payload.", + "title": "Class ID" + }, + "region_name": { + "default": "us", + "description": "The region name.", + "enum": [ + "us", + "eu" + ], + "title": "Region Name", + "type": "string" + }, + "clickable_url": { + "anyOf": [ + { + "format": "uri", + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A clickable URL to associate with the notice.", + "title": "Clickable URL" + }, + "include_image": { + "default": true, + "description": "Associate the notification status via a represented icon.", + "title": "Include Image", + "type": "boolean" + }, + "custom_details": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Additional details to include as part of the payload.", + "examples": [ + "{\"disk_space_left\": \"145GB\"}" + ], + "title": "Custom Details" + } + }, + "required": [ + "integration_key", + "api_key" + ], + "secret_fields": [ + "integration_key", + "api_key" + ], + "title": "PagerDutyWebHook", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "remote-file-system": { + "name": "Remote File System", + "slug": "remote-file-system", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/e86b41bc0f9c99ba9489abeee83433b43d5c9365-48x48.png", + "documentation_url": "https://docs.prefect.io/latest/develop/results#specifying-a-default-filesystem", + "description": "Store data as a file on a remote file system.\n\nSupports any remote file system supported by `fsspec`. The file system is specified\nusing a protocol. For example, \"s3://my-bucket/my-folder/\" will use S3.", + "code_example": "Load stored remote file system config:\n```python\nfrom prefect.filesystems import RemoteFileSystem\n\nremote_file_system_block = RemoteFileSystem.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:efb6b7304d9cadaf09a18abc60be7ae86aec60dbd7dba345faa7ba1e960b211f", + "fields": { + "block_schema_references": {}, + "block_type_slug": "remote-file-system", + "description": "Store data as a file on a remote file system.\n\nSupports any remote file system supported by `fsspec`. The file system is specified\nusing a protocol. For example, \"s3://my-bucket/my-folder/\" will use S3.", + "properties": { + "basepath": { + "description": "Default path for this block to write to.", + "examples": [ + "s3://my-bucket/my-folder/" + ], + "title": "Basepath", + "type": "string" + }, + "settings": { + "description": "Additional settings to pass through to fsspec.", + "title": "Settings", + "type": "object" + } + }, + "required": [ + "basepath" + ], + "secret_fields": [], + "title": "RemoteFileSystem", + "type": "object" + }, + "capabilities": [ + "get-directory", + "put-directory", + "read-path", + "write-path" + ], + "version": "3.4.25" + } + }, + "secret": { + "name": "Secret", + "slug": "secret", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/c6f20e556dd16effda9df16551feecfb5822092b-48x48.png", + "documentation_url": "https://docs.prefect.io/latest/develop/blocks", + "description": "A block that represents a secret value. The value stored in this block will be obfuscated when this block is viewed or edited in the UI.", + "code_example": "```python\nfrom prefect.blocks.system import Secret\n\nSecret(value=\"sk-1234567890\").save(\"BLOCK_NAME\", overwrite=True)\n\nsecret_block = Secret.load(\"BLOCK_NAME\")\n\n# Access the stored secret\nsecret_block.get()\n```", + "block_schema": { + "checksum": "sha256:f290d6bec2665ff8179b4b88a1ba1942bc93b228504da8b65ce66e8aa70d6159", + "fields": { + "block_schema_references": {}, + "block_type_slug": "secret", + "description": "A block that represents a secret value. The value stored in this block will be obfuscated when this block is viewed or edited in the UI.", + "properties": { + "value": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "title": "string", + "type": "string" + }, + { + "$ref": "#/definitions/JsonValue", + "title": "JSON" + } + ], + "description": "A value that should be kept secret.", + "examples": [ + "sk-1234567890", + { + "password": "s3cr3t", + "username": "johndoe" + } + ], + "format": "password", + "title": "Value", + "writeOnly": true + } + }, + "required": [ + "value" + ], + "secret_fields": [ + "value", + "value" + ], + "title": "Secret", + "type": "object", + "definitions": { + "JsonValue": {} + } + }, + "capabilities": [], + "version": "3.4.25" + } + }, + "sendgrid-email": { + "name": "Sendgrid Email", + "slug": "sendgrid-email", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/82bc6ed16ca42a2252a5512c72233a253b8a58eb-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via Sendgrid email service.", + "code_example": "Load a saved Sendgrid and send a email message:\n```python\nfrom prefect.blocks.notifications import SendgridEmail\n\nsendgrid_block = SendgridEmail.load(\"BLOCK_NAME\")\n\nsendgrid_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:9a6daced0eb910f83be027aaa8b67025ffd63650ec98ce7e8519e322af925b3b", + "fields": { + "block_schema_references": {}, + "block_type_slug": "sendgrid-email", + "description": "Enables sending notifications via Sendgrid email service.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "api_key": { + "description": "The API Key associated with your sendgrid account.", + "format": "password", + "title": "API Key", + "type": "string", + "writeOnly": true + }, + "sender_email": { + "description": "The sender email id.", + "examples": [ + "test-support@gmail.com" + ], + "title": "Sender email id", + "type": "string" + }, + "to_emails": { + "description": "Email ids of all recipients.", + "examples": [ + "\"recipient1@gmail.com\"" + ], + "items": { + "type": "string" + }, + "title": "Recipient emails", + "type": "array" + } + }, + "required": [ + "api_key", + "sender_email", + "to_emails" + ], + "secret_fields": [ + "api_key" + ], + "title": "SendgridEmail", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "slack-webhook": { + "name": "Slack Webhook", + "slug": "slack-webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/c1965ecbf8704ee1ea20d77786de9a41ce1087d1-500x500.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via a provided Slack webhook.", + "code_example": "Load a saved Slack webhook and send a message:\n```python\nfrom prefect.blocks.notifications import SlackWebhook\n\nslack_webhook_block = SlackWebhook.load(\"BLOCK_NAME\")\nslack_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:4c5f58a0a665af3bec3831b2e8deee874789a390231d0b7290b381b2260e67dc", + "fields": { + "block_schema_references": {}, + "block_type_slug": "slack-webhook", + "description": "Enables sending notifications via a provided Slack webhook.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "url": { + "description": "Slack incoming webhook URL used to send notifications.", + "examples": [ + "https://hooks.slack.com/XXX" + ], + "format": "password", + "title": "Webhook URL", + "type": "string", + "writeOnly": true + }, + "allow_private_urls": { + "default": true, + "description": "Whether to allow notifications to private URLs. Defaults to True.", + "title": "Allow Private Urls", + "type": "boolean" + } + }, + "required": [ + "url" + ], + "secret_fields": [ + "url" + ], + "title": "SlackWebhook", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "smb": { + "name": "SMB", + "slug": "smb", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/3f624663f7beb97d011d011bffd51ecf6c499efc-195x195.png", + "documentation_url": "https://docs.prefect.io/latest/develop/results#specifying-a-default-filesystem", + "description": "Store data as a file on a SMB share.", + "code_example": "Load stored SMB config:\n\n```python\nfrom prefect.filesystems import SMB\nsmb_block = SMB.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:43bb8145a5f701e6453ca0f91ccd5640f291960b02d916055ff1523bab896f33", + "fields": { + "block_schema_references": {}, + "block_type_slug": "smb", + "description": "Store data as a file on a SMB share.", + "properties": { + "share_path": { + "description": "SMB target (requires , followed by ).", + "examples": [ + "/SHARE/dir/subdir" + ], + "title": "Share Path", + "type": "string" + }, + "smb_username": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "Username with access to the target SMB SHARE.", + "title": "SMB Username" + }, + "smb_password": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "Password for SMB access.", + "title": "SMB Password" + }, + "smb_host": { + "description": "SMB server/hostname.", + "title": "SMB server/hostname", + "type": "string" + }, + "smb_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "SMB port (default: 445).", + "title": "SMB port" + } + }, + "required": [ + "share_path", + "smb_host" + ], + "secret_fields": [ + "smb_username", + "smb_password" + ], + "title": "SMB", + "type": "object" + }, + "capabilities": [ + "get-directory", + "put-directory", + "read-path", + "write-path" + ], + "version": "3.4.25" + } + }, + "string": { + "name": "String", + "slug": "string", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/c262ea2c80a2c043564e8763f3370c3db5a6b3e6-48x48.png", + "documentation_url": "https://docs.prefect.io/latest/develop/blocks", + "description": "A block that represents a string. Deprecated, please use Variables to store string data instead.", + "code_example": "Load a stored string value:\n```python\nfrom prefect.blocks.system import String\n\nstring_block = String.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:d1323de7a11a0fcd1854515cf86358ad819f51e8d43f5ba176578965f54b2f9f", + "fields": { + "block_schema_references": {}, + "block_type_slug": "string", + "description": "A block that represents a string. Deprecated, please use Variables to store string data instead.", + "properties": { + "value": { + "description": "A string value.", + "title": "Value", + "type": "string" + } + }, + "required": [ + "value" + ], + "secret_fields": [], + "title": "String", + "type": "object" + }, + "capabilities": [], + "version": "3.4.25" + } + }, + "twilio-sms": { + "name": "Twilio SMS", + "slug": "twilio-sms", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/8bd8777999f82112c09b9c8d57083ac75a4a0d65-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", + "description": "Enables sending notifications via Twilio SMS.", + "code_example": "Load a saved `TwilioSMS` block and send a message:\n```python\nfrom prefect.blocks.notifications import TwilioSMS\ntwilio_webhook_block = TwilioSMS.load(\"BLOCK_NAME\")\ntwilio_webhook_block.notify(\"Hello from Prefect!\")\n```", + "block_schema": { + "checksum": "sha256:cd0041b2c8386c1794c554da53eacc644f0ec9ee7de59f7a0a4bcd8e161c350a", + "fields": { + "block_schema_references": {}, + "block_type_slug": "twilio-sms", + "description": "Enables sending notifications via Twilio SMS.", + "properties": { + "notify_type": { + "default": "info", + "description": "The type of notification being performed.", + "enum": [ + "info", + "success", + "warning", + "failure" + ], + "title": "Notify Type", + "type": "string" + }, + "account_sid": { + "description": "The Twilio Account SID - it can be found on the homepage of the Twilio console.", + "title": "Account Sid", + "type": "string" + }, + "auth_token": { + "description": "The Twilio Authentication Token - it can be found on the homepage of the Twilio console.", + "format": "password", + "title": "Auth Token", + "type": "string", + "writeOnly": true + }, + "from_phone_number": { + "description": "The valid Twilio phone number to send the message from.", + "examples": [ + "18001234567" + ], + "title": "From Phone Number", + "type": "string" + }, + "to_phone_numbers": { + "description": "A list of valid Twilio phone number(s) to send the message to.", + "examples": [ + "18004242424" + ], + "items": { + "type": "string" + }, + "title": "To Phone Numbers", + "type": "array" + } + }, + "required": [ + "account_sid", + "auth_token", + "from_phone_number", + "to_phone_numbers" + ], + "secret_fields": [ + "auth_token" + ], + "title": "TwilioSMS", + "type": "object" + }, + "capabilities": [ + "notify" + ], + "version": "3.4.25" + } + }, + "webhook": { + "name": "Webhook", + "slug": "webhook", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/c7247cb359eb6cf276734d4b1fbf00fb8930e89e-250x250.png", + "documentation_url": "https://docs.prefect.io/latest/automate/events/webhook-triggers", + "description": "Block that enables calling webhooks.", + "code_example": "```python\nfrom prefect.blocks.webhook import Webhook\n\nwebhook_block = Webhook.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:61e9dbea14935ccb2cfac7eb38f01c4e878a81073806f2aec993820fa0d91eb3", + "fields": { + "block_schema_references": {}, + "block_type_slug": "webhook", + "description": "Block that enables calling webhooks.", + "properties": { + "method": { + "default": "POST", + "description": "The webhook request method. Defaults to `POST`.", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "title": "Method", + "type": "string" + }, + "url": { + "description": "The webhook URL.", + "examples": [ + "https://hooks.slack.com/XXX" + ], + "format": "password", + "title": "Webhook URL", + "type": "string", + "writeOnly": true + }, + "headers": { + "description": "A dictionary of headers to send with the webhook request.", + "title": "Webhook Headers", + "type": "object" + }, + "allow_private_urls": { + "default": true, + "description": "Whether to allow notifications to private URLs. Defaults to True.", + "title": "Allow Private Urls", + "type": "boolean" + }, + "verify": { + "default": true, + "description": "Whether or not to enforce a secure connection to the webhook.", + "title": "Verify", + "type": "boolean" + } + }, + "required": [ + "url" + ], + "secret_fields": [ + "url", + "headers.*" + ], + "title": "Webhook", + "type": "object" + }, + "capabilities": [], + "version": "3.4.25" + } + } + } + } +} \ No newline at end of file From 66ebdf3225a9c685fb69cf521dd94efbfe55eb95 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:02 -0500 Subject: [PATCH 08/42] Update aggregate block metadata with `prefect` `v3.5.0` --- views/aggregate-block-metadata.json | 118 +++++++++++++++------------- 1 file changed, 64 insertions(+), 54 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 3142edb00..3432d3d5f 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -30,7 +30,7 @@ "type": "object" }, "capabilities": [], - "version": "3.1.5" + "version": "3.4.25" } }, "discord-webhook": { @@ -41,17 +41,16 @@ "description": "Enables sending notifications via a provided Discord webhook.", "code_example": "Load a saved Discord webhook and send a message:\n```python\nfrom prefect.blocks.notifications import DiscordWebhook\n\ndiscord_webhook_block = DiscordWebhook.load(\"BLOCK_NAME\")\n\ndiscord_webhook_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:6a52b1831a9e289e74a3dc03986ca1b00aaf8c4c523fd9dcacd1982e45bfe956", + "checksum": "sha256:300616b3c36b57f6f2c83874213eec897d55bb4049eedbb76ce9afc4e9f5f8d9", "fields": { "block_schema_references": {}, "block_type_slug": "discord-webhook", "description": "Enables sending notifications via a provided Discord webhook.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -114,7 +113,7 @@ "type": "null" } ], - "default": false, + "default": null, "description": "Over-ride the default discord avatar icon URL. By default this is not set and Apprise chooses the URL dynamically based on the type of message (info, success, warning, or error).", "title": "Avatar URL" } @@ -133,7 +132,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "json": { @@ -163,7 +162,7 @@ "type": "object" }, "capabilities": [], - "version": "3.1.5" + "version": "3.4.25" } }, "local-file-system": { @@ -204,7 +203,7 @@ "read-path", "write-path" ], - "version": "3.1.5" + "version": "3.4.25" } }, "mattermost-webhook": { @@ -215,17 +214,16 @@ "description": "Enables sending notifications via a provided Mattermost webhook.", "code_example": "Load a saved Mattermost webhook and send a message:\n```python\nfrom prefect.blocks.notifications import MattermostWebhook\n\nmattermost_webhook_block = MattermostWebhook.load(\"BLOCK_NAME\")\n\nmattermost_webhook_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:01f4ee2616acf43a554c44388e36439ebe3ad0f8e58e67279a0116d476dd5e61", + "checksum": "sha256:4c3388c861c0d76b7989ee652c6e0894c229afd448fd78b9d8219890681b3be9", "fields": { "block_schema_references": {}, "block_type_slug": "mattermost-webhook", "description": "Enables sending notifications via a provided Mattermost webhook.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -242,6 +240,12 @@ "title": "Hostname", "type": "string" }, + "secure": { + "default": false, + "description": "Whether to use secure https connection.", + "title": "Secure", + "type": "boolean" + }, "token": { "description": "The token associated with your Mattermost webhook.", "format": "password", @@ -317,7 +321,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "ms-teams-webhook": { @@ -328,17 +332,16 @@ "description": "Enables sending notifications via a provided Microsoft Teams webhook.", "code_example": "Load a saved Teams webhook and send a message:\n```python\nfrom prefect.blocks.notifications import MicrosoftTeamsWebhook\nteams_webhook_block = MicrosoftTeamsWebhook.load(\"BLOCK_NAME\")\nteams_webhook_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:d3ad686c4c75d7f4c4db5075e18170ce22a1f25f98f04c7cc8e2cc12656e9c2f", + "checksum": "sha256:c442ad7eaddcd734e926eead9bca2251fd3cbdcb69c666cea3696b9a60766028", "fields": { "block_schema_references": {}, "block_type_slug": "ms-teams-webhook", "description": "Enables sending notifications via a provided Microsoft Teams webhook.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -388,7 +391,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "opsgenie-webhook": { @@ -399,17 +402,16 @@ "description": "Enables sending notifications via a provided Opsgenie webhook.", "code_example": "Load a saved Opsgenie webhook and send a message:\n```python\nfrom prefect.blocks.notifications import OpsgenieWebhook\nopsgenie_webhook_block = OpsgenieWebhook.load(\"BLOCK_NAME\")\nopsgenie_webhook_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:748fdf50db8e686cd50865d2079273095912697aefd180b690c8dbfd80f0b362", + "checksum": "sha256:d81bd1efed107d9dab8ffac871c1d5d243da72fc96aa1eb86c79fb406b47f407", "fields": { "block_schema_references": {}, "block_type_slug": "opsgenie-webhook", "description": "Enables sending notifications via a provided Opsgenie webhook.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -428,7 +430,9 @@ "target_user": { "anyOf": [ { - "items": {}, + "items": { + "type": "string" + }, "type": "array" }, { @@ -442,7 +446,9 @@ "target_team": { "anyOf": [ { - "items": {}, + "items": { + "type": "string" + }, "type": "array" }, { @@ -456,7 +462,9 @@ "target_schedule": { "anyOf": [ { - "items": {}, + "items": { + "type": "string" + }, "type": "array" }, { @@ -470,7 +478,9 @@ "target_escalation": { "anyOf": [ { - "items": {}, + "items": { + "type": "string" + }, "type": "array" }, { @@ -500,7 +510,9 @@ "tags": { "anyOf": [ { - "items": {}, + "items": { + "type": "string" + }, "type": "array" }, { @@ -585,7 +597,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "pager-duty-webhook": { @@ -738,7 +750,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "remote-file-system": { @@ -782,7 +794,7 @@ "read-path", "write-path" ], - "version": "3.1.5" + "version": "3.4.25" } }, "secret": { @@ -790,14 +802,14 @@ "slug": "secret", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/c6f20e556dd16effda9df16551feecfb5822092b-48x48.png", "documentation_url": "https://docs.prefect.io/latest/develop/blocks", - "description": "A block that represents a secret value. The value stored in this block will be obfuscated when\nthis block is viewed or edited in the UI.", + "description": "A block that represents a secret value. The value stored in this block will be obfuscated when this block is viewed or edited in the UI.", "code_example": "```python\nfrom prefect.blocks.system import Secret\n\nSecret(value=\"sk-1234567890\").save(\"BLOCK_NAME\", overwrite=True)\n\nsecret_block = Secret.load(\"BLOCK_NAME\")\n\n# Access the stored secret\nsecret_block.get()\n```", "block_schema": { - "checksum": "sha256:fab1c36f1340a9fee1a4de830018147ac5266bf9121de8df9c1c23d8897cd701", + "checksum": "sha256:f290d6bec2665ff8179b4b88a1ba1942bc93b228504da8b65ce66e8aa70d6159", "fields": { "block_schema_references": {}, "block_type_slug": "secret", - "description": "A block that represents a secret value. The value stored in this block will be obfuscated when\nthis block is viewed or edited in the UI.", + "description": "A block that represents a secret value. The value stored in this block will be obfuscated when this block is viewed or edited in the UI.", "properties": { "value": { "anyOf": [ @@ -832,6 +844,7 @@ "value" ], "secret_fields": [ + "value", "value" ], "title": "Secret", @@ -841,7 +854,7 @@ } }, "capabilities": [], - "version": "3.1.5" + "version": "3.4.25" } }, "sendgrid-email": { @@ -850,19 +863,18 @@ "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/82bc6ed16ca42a2252a5512c72233a253b8a58eb-250x250.png", "documentation_url": "https://docs.prefect.io/latest/automate/events/automations-triggers#sending-notifications-with-automations", "description": "Enables sending notifications via Sendgrid email service.", - "code_example": "Load a saved Sendgrid and send a email message:\n```python\nfrom prefect.blocks.notifications import SendgridEmail\n\nsendgrid_block = SendgridEmail.load(\"BLOCK_NAME\")\n\nsendgrid_block.notify(\"Hello from Prefect!\")", + "code_example": "Load a saved Sendgrid and send a email message:\n```python\nfrom prefect.blocks.notifications import SendgridEmail\n\nsendgrid_block = SendgridEmail.load(\"BLOCK_NAME\")\n\nsendgrid_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:ca1ce43172228b65a570b1a5de9cdbd9813945e672807dc42d21b69d9d3977e7", + "checksum": "sha256:9a6daced0eb910f83be027aaa8b67025ffd63650ec98ce7e8519e322af925b3b", "fields": { "block_schema_references": {}, "block_type_slug": "sendgrid-email", "description": "Enables sending notifications via Sendgrid email service.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -912,7 +924,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "slack-webhook": { @@ -923,17 +935,16 @@ "description": "Enables sending notifications via a provided Slack webhook.", "code_example": "Load a saved Slack webhook and send a message:\n```python\nfrom prefect.blocks.notifications import SlackWebhook\n\nslack_webhook_block = SlackWebhook.load(\"BLOCK_NAME\")\nslack_webhook_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:27d4fa59cceca2b98793d6ef0f97fd3b416f9cacd26912573d8edc05ca1666b4", + "checksum": "sha256:4c5f58a0a665af3bec3831b2e8deee874789a390231d0b7290b381b2260e67dc", "fields": { "block_schema_references": {}, "block_type_slug": "slack-webhook", "description": "Enables sending notifications via a provided Slack webhook.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -971,7 +982,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "smb": { @@ -1062,7 +1073,7 @@ "read-path", "write-path" ], - "version": "3.1.5" + "version": "3.4.25" } }, "string": { @@ -1093,7 +1104,7 @@ "type": "object" }, "capabilities": [], - "version": "3.1.5" + "version": "3.4.25" } }, "twilio-sms": { @@ -1104,17 +1115,16 @@ "description": "Enables sending notifications via Twilio SMS.", "code_example": "Load a saved `TwilioSMS` block and send a message:\n```python\nfrom prefect.blocks.notifications import TwilioSMS\ntwilio_webhook_block = TwilioSMS.load(\"BLOCK_NAME\")\ntwilio_webhook_block.notify(\"Hello from Prefect!\")\n```", "block_schema": { - "checksum": "sha256:a3c827e6f0554918bbd7a4161795ad86a5e5baf980993cdc6e9e0d58c08b9aec", + "checksum": "sha256:cd0041b2c8386c1794c554da53eacc644f0ec9ee7de59f7a0a4bcd8e161c350a", "fields": { "block_schema_references": {}, "block_type_slug": "twilio-sms", "description": "Enables sending notifications via Twilio SMS.", "properties": { "notify_type": { - "default": "prefect_default", - "description": "The type of notification being performed; the prefect_default is a plain notification that does not attach an image.", + "default": "info", + "description": "The type of notification being performed.", "enum": [ - "prefect_default", "info", "success", "warning", @@ -1170,7 +1180,7 @@ "capabilities": [ "notify" ], - "version": "3.1.5" + "version": "3.4.25" } }, "webhook": { @@ -1239,7 +1249,7 @@ "type": "object" }, "capabilities": [], - "version": "3.1.5" + "version": "3.4.25" } } } From 2c02ddc53fe6cdda90be236916e6702666ec3391 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:03 -0500 Subject: [PATCH 09/42] Add `prefect` `v3.5.0` to worker records --- collections/prefect/workers/v3.5.0.json | 106 ++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 collections/prefect/workers/v3.5.0.json diff --git a/collections/prefect/workers/v3.5.0.json b/collections/prefect/workers/v3.5.0.json new file mode 100644 index 000000000..e5d451346 --- /dev/null +++ b/collections/prefect/workers/v3.5.0.json @@ -0,0 +1,106 @@ +{ + "prefect": { + "prefect-agent": { + "type": "prefect-agent", + "documentation_url": "https://docs.prefect.io/latest/concepts/work-pools/#agent-overview", + "display_name": "Prefect Agent", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/c771bb53894c877e169c8db158c5598558b8f175-24x24.svg", + "install_command": "pip install prefect", + "default_base_job_configuration": {}, + "description": "Execute flow runs on heterogeneous infrastructure using infrastructure blocks." + }, + "process": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "stream_output": "{{ stream_output }}", + "working_dir": "{{ working_dir }}" + }, + "variables": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "stream_output": { + "default": true, + "description": "If enabled, workers will stream output from flow run processes to local standard output.", + "title": "Stream Output", + "type": "boolean" + }, + "working_dir": { + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "If provided, workers will open flow run processes within the specified path as the working directory. Otherwise, a temporary directory will be created.", + "title": "Working Directory" + } + }, + "type": "object" + } + }, + "description": "Execute flow runs as subprocesses on a worker. Works well for local execution when first getting started.", + "display_name": "Process", + "documentation_url": "https://docs.prefect.io/latest/get-started/quickstart", + "install_command": "pip install prefect", + "is_beta": false, + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/356e6766a91baf20e1d08bbe16e8b5aaef4d8643-48x48.png", + "type": "process" + } + } +} \ No newline at end of file From 1209cfacd646407a7cb8b63dbad6809824774027 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:04 -0500 Subject: [PATCH 10/42] Update aggregate worker metadata with `prefect` `v3.5.0` --- views/aggregate-worker-metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/aggregate-worker-metadata.json b/views/aggregate-worker-metadata.json index de78afd9a..ccf5c0787 100644 --- a/views/aggregate-worker-metadata.json +++ b/views/aggregate-worker-metadata.json @@ -1857,4 +1857,4 @@ "type": "kubernetes" } } -} +} \ No newline at end of file From 7b5999599750f35525d6bf776fbb6996504930de Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:33 -0500 Subject: [PATCH 11/42] Add `prefect-kubernetes` `v0.6.6` to block records --- .../prefect-kubernetes/blocks/v0.6.6.json | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 collections/prefect-kubernetes/blocks/v0.6.6.json diff --git a/collections/prefect-kubernetes/blocks/v0.6.6.json b/collections/prefect-kubernetes/blocks/v0.6.6.json new file mode 100644 index 000000000..bcd4a7d0a --- /dev/null +++ b/collections/prefect-kubernetes/blocks/v0.6.6.json @@ -0,0 +1,108 @@ +{ + "prefect-kubernetes": { + "block_types": { + "kubernetes-cluster-config": { + "name": "Kubernetes Cluster Config", + "slug": "kubernetes-cluster-config", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/2d0b896006ad463b49c28aaac14f31e00e32cfab-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-kubernetes", + "description": "Stores configuration for interaction with Kubernetes clusters.\n\nSee `from_file` for creation. This block is part of the prefect-kubernetes collection. Install prefect-kubernetes with `pip install prefect-kubernetes` to use this block.", + "code_example": "Load a saved Kubernetes cluster config:\n```python\nfrom prefect_kubernetes.credentials import import KubernetesClusterConfig\n\ncluster_config_block = KubernetesClusterConfig.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:90d421e948bfbe4cdc98b124995f0edd0f84b0837549ad1390423bad8e31cf3b", + "fields": { + "block_schema_references": {}, + "block_type_slug": "kubernetes-cluster-config", + "description": "Stores configuration for interaction with Kubernetes clusters.\n\nSee `from_file` for creation.", + "properties": { + "config": { + "description": "The entire contents of a kubectl config file.", + "title": "Config", + "type": "object" + }, + "context_name": { + "description": "The name of the kubectl context to use.", + "title": "Context Name", + "type": "string" + } + }, + "required": [ + "config", + "context_name" + ], + "secret_fields": [], + "title": "KubernetesClusterConfig", + "type": "object" + }, + "capabilities": [], + "version": "0.6.6" + } + }, + "kubernetes-credentials": { + "name": "Kubernetes Credentials", + "slug": "kubernetes-credentials", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/2d0b896006ad463b49c28aaac14f31e00e32cfab-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-kubernetes", + "description": "Credentials block for generating configured Kubernetes API clients. This block is part of the prefect-kubernetes collection. Install prefect-kubernetes with `pip install prefect-kubernetes` to use this block.", + "code_example": "Load stored Kubernetes credentials:\n```python\nfrom prefect_kubernetes.credentials import KubernetesCredentials\n\nkubernetes_credentials = KubernetesCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:205323083b1cc3076ead5dc1bf6f6cd5f94d6644e54c05bcd0c9789c20915256", + "fields": { + "block_schema_references": { + "cluster_config": { + "block_schema_checksum": "sha256:90d421e948bfbe4cdc98b124995f0edd0f84b0837549ad1390423bad8e31cf3b", + "block_type_slug": "kubernetes-cluster-config" + } + }, + "block_type_slug": "kubernetes-credentials", + "description": "Credentials block for generating configured Kubernetes API clients.", + "properties": { + "cluster_config": { + "anyOf": [ + { + "$ref": "#/definitions/KubernetesClusterConfig" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "secret_fields": [], + "title": "KubernetesCredentials", + "type": "object", + "definitions": { + "KubernetesClusterConfig": { + "block_schema_references": {}, + "block_type_slug": "kubernetes-cluster-config", + "description": "Stores configuration for interaction with Kubernetes clusters.\n\nSee `from_file` for creation.", + "properties": { + "config": { + "description": "The entire contents of a kubectl config file.", + "title": "Config", + "type": "object" + }, + "context_name": { + "description": "The name of the kubectl context to use.", + "title": "Context Name", + "type": "string" + } + }, + "required": [ + "config", + "context_name" + ], + "secret_fields": [], + "title": "KubernetesClusterConfig", + "type": "object" + } + } + }, + "capabilities": [], + "version": "0.6.6" + } + } + } + } +} \ No newline at end of file From 2ae9b364e489ea37e6649f4f38ffffd6a6f56098 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:34 -0500 Subject: [PATCH 12/42] Update aggregate block metadata with `prefect-kubernetes` `v0.6.6` --- views/aggregate-block-metadata.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 3432d3d5f..2cb708c59 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -6794,7 +6794,7 @@ "type": "object" }, "capabilities": [], - "version": "0.5.5" + "version": "0.6.6" } }, "kubernetes-credentials": { @@ -6859,7 +6859,7 @@ } }, "capabilities": [], - "version": "0.5.5" + "version": "0.6.6" } } } From 0a94b2d4b4d4230f5906e62742aa38457c2a3d15 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:36 -0500 Subject: [PATCH 13/42] Add `prefect-kubernetes` `v0.6.6` to worker records --- .../prefect-kubernetes/workers/v0.6.6.json | 241 ++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 collections/prefect-kubernetes/workers/v0.6.6.json diff --git a/collections/prefect-kubernetes/workers/v0.6.6.json b/collections/prefect-kubernetes/workers/v0.6.6.json new file mode 100644 index 000000000..ed772e71a --- /dev/null +++ b/collections/prefect-kubernetes/workers/v0.6.6.json @@ -0,0 +1,241 @@ +{ + "prefect-kubernetes": { + "kubernetes": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "namespace": "{{ namespace }}", + "job_manifest": { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "generateName": "{{ name }}-", + "labels": "{{ labels }}", + "namespace": "{{ namespace }}" + }, + "spec": { + "backoffLimit": "{{ backoff_limit }}", + "template": { + "spec": { + "completions": 1, + "containers": [ + { + "args": "{{ command }}", + "env": "{{ env }}", + "image": "{{ image }}", + "imagePullPolicy": "{{ image_pull_policy }}", + "name": "prefect-job" + } + ], + "parallelism": 1, + "restartPolicy": "Never", + "serviceAccountName": "{{ service_account_name }}" + } + }, + "ttlSecondsAfterFinished": "{{ finished_job_ttl }}" + } + }, + "cluster_config": "{{ cluster_config }}", + "job_watch_timeout_seconds": "{{ job_watch_timeout_seconds }}", + "pod_watch_timeout_seconds": "{{ pod_watch_timeout_seconds }}", + "stream_output": "{{ stream_output }}" + }, + "variables": { + "description": "Default variables for the Kubernetes worker.\n\nThe schema for this class is used to populate the `variables` section of the default\nbase job template.", + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "namespace": { + "default": "default", + "description": "The Kubernetes namespace to create jobs within.", + "title": "Namespace", + "type": "string" + }, + "image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image reference of a container image to use for created jobs. If not set, the latest Prefect image will be used.", + "examples": [ + "docker.io/prefecthq/prefect:3-latest" + ], + "title": "Image" + }, + "service_account_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Kubernetes service account to use for job creation.", + "title": "Service Account Name" + }, + "image_pull_policy": { + "default": "IfNotPresent", + "description": "The Kubernetes image pull policy to use for job containers.", + "enum": [ + "IfNotPresent", + "Always", + "Never" + ], + "title": "Image Pull Policy", + "type": "string" + }, + "backoff_limit": { + "default": 0, + "description": "The number of times Kubernetes will retry a job after pod eviction. If set to 0, Prefect will reschedule the flow run when the pod is evicted unless PREFECT_FLOW_RUN_EXECUTE_SIGTERM_BEHAVIOR is set to value different from 'reschedule'.", + "minimum": 0, + "title": "Backoff Limit", + "type": "integer" + }, + "finished_job_ttl": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The number of seconds to retain jobs after completion. If set, finished jobs will be cleaned up by Kubernetes after the given delay. If not set, jobs will be retained indefinitely.", + "title": "Finished Job TTL" + }, + "job_watch_timeout_seconds": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Number of seconds to wait for each event emitted by a job before timing out. If not set, the worker will wait for each event indefinitely.", + "title": "Job Watch Timeout Seconds" + }, + "pod_watch_timeout_seconds": { + "default": 60, + "description": "Number of seconds to watch for pod creation before timing out.", + "title": "Pod Watch Timeout Seconds", + "type": "integer" + }, + "stream_output": { + "default": true, + "description": "If set, output will be streamed from the job to local standard output.", + "title": "Stream Output", + "type": "boolean" + }, + "cluster_config": { + "anyOf": [ + { + "$ref": "#/definitions/KubernetesClusterConfig" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Kubernetes cluster config to use for job creation." + } + }, + "type": "object", + "definitions": { + "KubernetesClusterConfig": { + "block_schema_references": {}, + "block_type_slug": "kubernetes-cluster-config", + "description": "Stores configuration for interaction with Kubernetes clusters.\n\nSee `from_file` for creation.", + "properties": { + "config": { + "additionalProperties": true, + "description": "The entire contents of a kubectl config file.", + "title": "Config", + "type": "object" + }, + "context_name": { + "description": "The name of the kubectl context to use.", + "title": "Context Name", + "type": "string" + } + }, + "required": [ + "config", + "context_name" + ], + "secret_fields": [], + "title": "KubernetesClusterConfig", + "type": "object" + } + } + } + }, + "description": "Execute flow runs within jobs scheduled on a Kubernetes cluster. Requires a Kubernetes cluster.", + "display_name": "Kubernetes", + "documentation_url": "https://docs.prefect.io/integrations/prefect-kubernetes", + "install_command": "pip install prefect-kubernetes", + "is_beta": false, + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/2d0b896006ad463b49c28aaac14f31e00e32cfab-250x250.png", + "type": "kubernetes" + } + } +} \ No newline at end of file From 821f3b9e579d4ad8b9c51d50c1e5b8b0ad826b49 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:05:37 -0500 Subject: [PATCH 14/42] Update aggregate worker metadata with `prefect-kubernetes` `v0.6.6` --- views/aggregate-worker-metadata.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/views/aggregate-worker-metadata.json b/views/aggregate-worker-metadata.json index ccf5c0787..76ca4ff2f 100644 --- a/views/aggregate-worker-metadata.json +++ b/views/aggregate-worker-metadata.json @@ -1644,7 +1644,7 @@ "namespace": "{{ namespace }}" }, "spec": { - "backoffLimit": 0, + "backoffLimit": "{{ backoff_limit }}", "template": { "spec": { "completions": 1, @@ -1768,6 +1768,13 @@ "title": "Image Pull Policy", "type": "string" }, + "backoff_limit": { + "default": 0, + "description": "The number of times Kubernetes will retry a job after pod eviction. If set to 0, Prefect will reschedule the flow run when the pod is evicted unless PREFECT_FLOW_RUN_EXECUTE_SIGTERM_BEHAVIOR is set to value different from 'reschedule'.", + "minimum": 0, + "title": "Backoff Limit", + "type": "integer" + }, "finished_job_ttl": { "anyOf": [ { @@ -1827,6 +1834,7 @@ "description": "Stores configuration for interaction with Kubernetes clusters.\n\nSee `from_file` for creation.", "properties": { "config": { + "additionalProperties": true, "description": "The entire contents of a kubectl config file.", "title": "Config", "type": "object" From e52488af20ce3193accb7c1ece9f278996dc5a62 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:14 -0500 Subject: [PATCH 15/42] Add `prefect-sqlalchemy` `v0.5.3` to block records --- .../prefect-sqlalchemy/blocks/v0.5.3.json | 213 ++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 collections/prefect-sqlalchemy/blocks/v0.5.3.json diff --git a/collections/prefect-sqlalchemy/blocks/v0.5.3.json b/collections/prefect-sqlalchemy/blocks/v0.5.3.json new file mode 100644 index 000000000..3bbd2132f --- /dev/null +++ b/collections/prefect-sqlalchemy/blocks/v0.5.3.json @@ -0,0 +1,213 @@ +{ + "prefect-sqlalchemy": { + "block_types": { + "sqlalchemy-connector": { + "name": "SQLAlchemy Connector", + "slug": "sqlalchemy-connector", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/3c7dff04f70aaf4528e184a3b028f9e40b98d68c-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-sqlalchemy", + "description": "Block used to manage authentication with a database.\n\nUpon instantiating, an engine is created and maintained for the life of\nthe object until the close method is called.\n\nIt is recommended to use this block as a context manager, which will automatically\nclose the engine and its connections when the context is exited.\n\nIt is also recommended that this block is loaded and consumed within a single task\nor flow because if the block is passed across separate tasks and flows,\nthe state of the block's connection and cursor could be lost. This block is part of the prefect-sqlalchemy collection. Install prefect-sqlalchemy with `pip install prefect-sqlalchemy` to use this block.", + "code_example": "Load stored database credentials and use in context manager:\n```python\nfrom prefect_sqlalchemy import SqlAlchemyConnector\n\ndatabase_block = SqlAlchemyConnector.load(\"BLOCK_NAME\")\nwith database_block:\n ...\n```\n\nCreate table named customers and insert values; then fetch the first 10 rows.\n```python\nfrom prefect_sqlalchemy import (\n SqlAlchemyConnector, SyncDriver, ConnectionComponents\n)\n\nwith SqlAlchemyConnector(\n connection_info=ConnectionComponents(\n driver=SyncDriver.SQLITE_PYSQLITE,\n database=\"prefect.db\"\n )\n) as database:\n database.execute(\n \"CREATE TABLE IF NOT EXISTS customers (name varchar, address varchar);\",\n )\n for i in range(1, 42):\n database.execute(\n \"INSERT INTO customers (name, address) VALUES (:name, :address);\",\n parameters={\"name\": \"Marvin\", \"address\": f\"Highway {i}\"},\n )\n results = database.fetch_many(\n \"SELECT * FROM customers WHERE name = :name;\",\n parameters={\"name\": \"Marvin\"},\n size=10\n )\nprint(results)\n```", + "block_schema": { + "checksum": "sha256:4a748d34e5c464652239dddb5b5153f8f58771995fefdfe71308316860bb881d", + "fields": { + "block_schema_references": {}, + "block_type_slug": "sqlalchemy-connector", + "description": "Block used to manage authentication with a database.\n\nUpon instantiating, an engine is created and maintained for the life of\nthe object until the close method is called.\n\nIt is recommended to use this block as a context manager, which will automatically\nclose the engine and its connections when the context is exited.\n\nIt is also recommended that this block is loaded and consumed within a single task\nor flow because if the block is passed across separate tasks and flows,\nthe state of the block's connection and cursor could be lost.", + "properties": { + "connection_info": { + "anyOf": [ + { + "$ref": "#/definitions/ConnectionComponents" + }, + { + "type": "string" + } + ], + "description": "SQLAlchemy URL to create the engine; either create from components or create from a string.", + "title": "Connection Info" + }, + "connect_args": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The options which will be passed directly to the DBAPI's connect() method as additional keyword arguments.", + "title": "Additional Connection Arguments" + }, + "fetch_size": { + "default": 1, + "description": "The number of rows to fetch at a time.", + "title": "Fetch Size", + "type": "integer" + } + }, + "required": [ + "connection_info" + ], + "secret_fields": [ + "connection_info.password" + ], + "title": "SqlAlchemyConnector", + "type": "object", + "definitions": { + "AsyncDriver": { + "description": "Known dialects with their corresponding async drivers.\n\nAttributes:\n POSTGRESQL_ASYNCPG (Enum): [postgresql+asyncpg](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.asyncpg)\n\n SQLITE_AIOSQLITE (Enum): [sqlite+aiosqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.aiosqlite)\n\n MYSQL_ASYNCMY (Enum): [mysql+asyncmy](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.asyncmy)\n MYSQL_AIOMYSQL (Enum): [mysql+aiomysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.aiomysql)\n\n ORACLE_ORACLEDB_ASYNC (Enum): [oracle+oracledb_async](https://docs.sqlalchemy.org/en/20/dialects/oracle.html#module-sqlalchemy.dialects.oracle.oracledb)", + "enum": [ + "postgresql+asyncpg", + "sqlite+aiosqlite", + "mysql+asyncmy", + "mysql+aiomysql", + "oracle+oracledb_async" + ], + "title": "AsyncDriver", + "type": "string" + }, + "ConnectionComponents": { + "description": "Parameters to use to create a SQLAlchemy engine URL.\n\nAttributes:\n driver: The driver name to use.\n database: The name of the database to use.\n username: The user name used to authenticate.\n password: The password used to authenticate.\n host: The host address of the database.\n port: The port to connect to the database.\n query: A dictionary of string keys to string values to be passed to the dialect\n and/or the DBAPI upon connect.", + "properties": { + "driver": { + "anyOf": [ + { + "$ref": "#/definitions/AsyncDriver" + }, + { + "$ref": "#/definitions/SyncDriver" + }, + { + "type": "string" + } + ], + "description": "The driver name to use.", + "title": "Driver" + }, + "database": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the database to use.", + "title": "Database" + }, + "username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The user name used to authenticate.", + "title": "Username" + }, + "password": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The password used to authenticate.", + "title": "Password" + }, + "host": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The host address of the database.", + "title": "Host" + }, + "port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The port to connect to the database.", + "title": "Port" + }, + "query": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A dictionary of string keys to string values to be passed to the dialect and/or the DBAPI upon connect. To specify non-string parameters to a Python DBAPI directly, use connect_args.", + "title": "Query" + } + }, + "required": [ + "driver" + ], + "title": "ConnectionComponents", + "type": "object" + }, + "SyncDriver": { + "description": "Known dialects with their corresponding sync drivers.\n\nAttributes:\n POSTGRESQL_PSYCOPG2 (Enum): [postgresql+psycopg2](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2)\n POSTGRESQL_PG8000 (Enum): [postgresql+pg8000](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pg8000)\n POSTGRESQL_PSYCOPG2CFFI (Enum): [postgresql+psycopg2cffi](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2cffi)\n POSTGRESQL_PYPOSTGRESQL (Enum): [postgresql+pypostgresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pypostgresql)\n POSTGRESQL_PYGRESQL (Enum): [postgresql+pygresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pygresql)\n\n MYSQL_MYSQLDB (Enum): [mysql+mysqldb](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqldb)\n MYSQL_PYMYSQL (Enum): [mysql+pymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pymysql)\n MYSQL_MYSQLCONNECTOR (Enum): [mysql+mysqlconnector](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector)\n MYSQL_CYMYSQL (Enum): [mysql+cymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.cymysql)\n MYSQL_OURSQL (Enum): [mysql+oursql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.oursql)\n MYSQL_PYODBC (Enum): [mysql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pyodbc)\n\n SQLITE_PYSQLITE (Enum): [sqlite+pysqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlite)\n SQLITE_PYSQLCIPHER (Enum): [sqlite+pysqlcipher](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlcipher)\n\n ORACLE_CX_ORACLE (Enum): [oracle+cx_oracle](https://docs.sqlalchemy.org/en/14/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle)\n ORACLE_ORACLEDB (Enum): [oracle+oracledb](https://docs.sqlalchemy.org/en/20/dialects/oracle.html#module-sqlalchemy.dialects.oracle.oracledb)\n\n MSSQL_PYODBC (Enum): [mssql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc)\n MSSQL_MXODBC (Enum): [mssql+mxodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.mxodbc)\n MSSQL_PYMSSQL (Enum): [mssql+pymssql](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pymssql)", + "enum": [ + "postgresql+psycopg2", + "postgresql+pg8000", + "postgresql+psycopg2cffi", + "postgresql+pypostgresql", + "postgresql+pygresql", + "mysql+mysqldb", + "mysql+pymysql", + "mysql+mysqlconnector", + "mysql+cymysql", + "mysql+oursql", + "mysql+pyodbc", + "sqlite+pysqlite", + "sqlite+pysqlcipher", + "oracle+cx_oracle", + "oracle+oracledb", + "mssql+pyodbc", + "mssql+mxodbc", + "mssql+pymssql" + ], + "title": "SyncDriver", + "type": "string" + } + } + }, + "capabilities": [], + "version": "0.5.3" + } + } + } + } +} \ No newline at end of file From a56707bd517290f912a86c5eba15e0e8ed6f297c Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:15 -0500 Subject: [PATCH 16/42] Update aggregate block metadata with `prefect-sqlalchemy` `v0.5.3` --- views/aggregate-block-metadata.json | 320 +++++++++++----------------- 1 file changed, 127 insertions(+), 193 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 2cb708c59..d016e8a58 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -7256,220 +7256,78 @@ }, "prefect-sqlalchemy": { "block_types": { - "database-credentials": { - "name": "Database Credentials", - "slug": "database-credentials", - "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/fb3f4debabcda1c5a3aeea4f5b3f94c28845e23e-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-sqlalchemy/credentials/#prefect_sqlalchemy.credentials.DatabaseCredentials", - "description": "Block used to manage authentication with a database. This block is part of the prefect-sqlalchemy collection. Install prefect-sqlalchemy with `pip install prefect-sqlalchemy` to use this block.", - "code_example": "Load stored database credentials:\n```python\nfrom prefect_sqlalchemy import DatabaseCredentials\ndatabase_block = DatabaseCredentials.load(\"BLOCK_NAME\")\n```", - "block_schema": { - "checksum": "sha256:76d1ccbf0ab2038fea77e9689b91a7c8b6398e080e95d9303f65a93a4c03162e", - "fields": { - "title": "DatabaseCredentials", - "description": "Block used to manage authentication with a database.", - "type": "object", - "properties": { - "driver": { - "title": "Driver", - "description": "The driver name to use.", - "anyOf": [ - { - "$ref": "#/definitions/AsyncDriver" - }, - { - "$ref": "#/definitions/SyncDriver" - }, - { - "type": "string" - } - ] - }, - "username": { - "title": "Username", - "description": "The user name used to authenticate.", - "type": "string" - }, - "password": { - "title": "Password", - "description": "The password used to authenticate.", - "type": "string", - "writeOnly": true, - "format": "password" - }, - "database": { - "title": "Database", - "description": "The name of the database to use.", - "type": "string" - }, - "host": { - "title": "Host", - "description": "The host address of the database.", - "type": "string" - }, - "port": { - "title": "Port", - "description": "The port to connect to the database.", - "type": "string" - }, - "query": { - "title": "Query", - "description": "A dictionary of string keys to string values to be passed to the dialect and/or the DBAPI upon connect. To specify non-string parameters to a Python DBAPI directly, use connect_args.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "url": { - "title": "Url", - "description": "Manually create and provide a URL to create the engine, this is useful for external dialects, e.g. Snowflake, because some of the params, such as 'warehouse', is not directly supported in the vanilla `sqlalchemy.engine.URL.create` method; do not provide this alongside with other URL params as it will raise a `ValueError`.", - "minLength": 1, - "maxLength": 65536, - "format": "uri", - "type": "string" - }, - "connect_args": { - "title": "Connect Args", - "description": "The options which will be passed directly to the DBAPI's connect() method as additional keyword arguments.", - "type": "object" - } - }, - "block_type_slug": "database-credentials", - "secret_fields": [ - "password" - ], - "block_schema_references": {}, - "definitions": { - "AsyncDriver": { - "title": "AsyncDriver", - "description": "Known dialects with their corresponding async drivers.\n\nAttributes:\n POSTGRESQL_ASYNCPG (Enum): [postgresql+asyncpg](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.asyncpg)\n\n SQLITE_AIOSQLITE (Enum): [sqlite+aiosqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.aiosqlite)\n\n MYSQL_ASYNCMY (Enum): [mysql+asyncmy](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.asyncmy)\n MYSQL_AIOMYSQL (Enum): [mysql+aiomysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.aiomysql)", - "enum": [ - "postgresql+asyncpg", - "sqlite+aiosqlite", - "mysql+asyncmy", - "mysql+aiomysql" - ] - }, - "SyncDriver": { - "title": "SyncDriver", - "description": "Known dialects with their corresponding sync drivers.\n\nAttributes:\n POSTGRESQL_PSYCOPG2 (Enum): [postgresql+psycopg2](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2)\n POSTGRESQL_PG8000 (Enum): [postgresql+pg8000](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pg8000)\n POSTGRESQL_PSYCOPG2CFFI (Enum): [postgresql+psycopg2cffi](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2cffi)\n POSTGRESQL_PYPOSTGRESQL (Enum): [postgresql+pypostgresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pypostgresql)\n POSTGRESQL_PYGRESQL (Enum): [postgresql+pygresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pygresql)\n\n MYSQL_MYSQLDB (Enum): [mysql+mysqldb](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqldb)\n MYSQL_PYMYSQL (Enum): [mysql+pymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pymysql)\n MYSQL_MYSQLCONNECTOR (Enum): [mysql+mysqlconnector](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector)\n MYSQL_CYMYSQL (Enum): [mysql+cymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.cymysql)\n MYSQL_OURSQL (Enum): [mysql+oursql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.oursql)\n MYSQL_PYODBC (Enum): [mysql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pyodbc)\n\n SQLITE_PYSQLITE (Enum): [sqlite+pysqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlite)\n SQLITE_PYSQLCIPHER (Enum): [sqlite+pysqlcipher](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlcipher)\n\n ORACLE_CX_ORACLE (Enum): [oracle+cx_oracle](https://docs.sqlalchemy.org/en/14/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle)\n\n MSSQL_PYODBC (Enum): [mssql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc)\n MSSQL_MXODBC (Enum): [mssql+mxodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.mxodbc)\n MSSQL_PYMSSQL (Enum): [mssql+pymssql](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pymssql)", - "enum": [ - "postgresql+psycopg2", - "postgresql+pg8000", - "postgresql+psycopg2cffi", - "postgresql+pypostgresql", - "postgresql+pygresql", - "mysql+mysqldb", - "mysql+pymysql", - "mysql+mysqlconnector", - "mysql+cymysql", - "mysql+oursql", - "mysql+pyodbc", - "sqlite+pysqlite", - "sqlite+pysqlcipher", - "oracle+cx_oracle", - "mssql+pyodbc", - "mssql+mxodbc", - "mssql+pymssql" - ] - } - } - }, - "capabilities": [], - "version": "0.4.0" - } - }, "sqlalchemy-connector": { "name": "SQLAlchemy Connector", "slug": "sqlalchemy-connector", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/3c7dff04f70aaf4528e184a3b028f9e40b98d68c-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-sqlalchemy/database/#prefect_sqlalchemy.database.SqlAlchemyConnector", + "documentation_url": "https://docs.prefect.io/integrations/prefect-sqlalchemy", "description": "Block used to manage authentication with a database.\n\nUpon instantiating, an engine is created and maintained for the life of\nthe object until the close method is called.\n\nIt is recommended to use this block as a context manager, which will automatically\nclose the engine and its connections when the context is exited.\n\nIt is also recommended that this block is loaded and consumed within a single task\nor flow because if the block is passed across separate tasks and flows,\nthe state of the block's connection and cursor could be lost. This block is part of the prefect-sqlalchemy collection. Install prefect-sqlalchemy with `pip install prefect-sqlalchemy` to use this block.", "code_example": "Load stored database credentials and use in context manager:\n```python\nfrom prefect_sqlalchemy import SqlAlchemyConnector\n\ndatabase_block = SqlAlchemyConnector.load(\"BLOCK_NAME\")\nwith database_block:\n ...\n```\n\nCreate table named customers and insert values; then fetch the first 10 rows.\n```python\nfrom prefect_sqlalchemy import (\n SqlAlchemyConnector, SyncDriver, ConnectionComponents\n)\n\nwith SqlAlchemyConnector(\n connection_info=ConnectionComponents(\n driver=SyncDriver.SQLITE_PYSQLITE,\n database=\"prefect.db\"\n )\n) as database:\n database.execute(\n \"CREATE TABLE IF NOT EXISTS customers (name varchar, address varchar);\",\n )\n for i in range(1, 42):\n database.execute(\n \"INSERT INTO customers (name, address) VALUES (:name, :address);\",\n parameters={\"name\": \"Marvin\", \"address\": f\"Highway {i}\"},\n )\n results = database.fetch_many(\n \"SELECT * FROM customers WHERE name = :name;\",\n parameters={\"name\": \"Marvin\"},\n size=10\n )\nprint(results)\n```", "block_schema": { - "checksum": "sha256:01e6c0bdaac125860811b201f5a5e98ffefd5f8a49f1398b6996aec362643acc", + "checksum": "sha256:4a748d34e5c464652239dddb5b5153f8f58771995fefdfe71308316860bb881d", "fields": { - "title": "SqlAlchemyConnector", + "block_schema_references": {}, + "block_type_slug": "sqlalchemy-connector", "description": "Block used to manage authentication with a database.\n\nUpon instantiating, an engine is created and maintained for the life of\nthe object until the close method is called.\n\nIt is recommended to use this block as a context manager, which will automatically\nclose the engine and its connections when the context is exited.\n\nIt is also recommended that this block is loaded and consumed within a single task\nor flow because if the block is passed across separate tasks and flows,\nthe state of the block's connection and cursor could be lost.", - "type": "object", "properties": { "connection_info": { - "title": "Connection Info", - "description": "SQLAlchemy URL to create the engine; either create from components or create from a string.", "anyOf": [ { "$ref": "#/definitions/ConnectionComponents" }, { - "type": "string", - "minLength": 1, - "maxLength": 65536, - "format": "uri" + "type": "string" } - ] + ], + "description": "SQLAlchemy URL to create the engine; either create from components or create from a string.", + "title": "Connection Info" }, "connect_args": { - "title": "Additional Connection Arguments", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "The options which will be passed directly to the DBAPI's connect() method as additional keyword arguments.", - "type": "object" + "title": "Additional Connection Arguments" }, "fetch_size": { - "title": "Fetch Size", - "description": "The number of rows to fetch at a time.", "default": 1, + "description": "The number of rows to fetch at a time.", + "title": "Fetch Size", "type": "integer" } }, "required": [ "connection_info" ], - "block_type_slug": "sqlalchemy-connector", "secret_fields": [ "connection_info.password" ], - "block_schema_references": {}, + "title": "SqlAlchemyConnector", + "type": "object", "definitions": { "AsyncDriver": { - "title": "AsyncDriver", - "description": "Known dialects with their corresponding async drivers.\n\nAttributes:\n POSTGRESQL_ASYNCPG (Enum): [postgresql+asyncpg](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.asyncpg)\n\n SQLITE_AIOSQLITE (Enum): [sqlite+aiosqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.aiosqlite)\n\n MYSQL_ASYNCMY (Enum): [mysql+asyncmy](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.asyncmy)\n MYSQL_AIOMYSQL (Enum): [mysql+aiomysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.aiomysql)", + "description": "Known dialects with their corresponding async drivers.\n\nAttributes:\n POSTGRESQL_ASYNCPG (Enum): [postgresql+asyncpg](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.asyncpg)\n\n SQLITE_AIOSQLITE (Enum): [sqlite+aiosqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.aiosqlite)\n\n MYSQL_ASYNCMY (Enum): [mysql+asyncmy](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.asyncmy)\n MYSQL_AIOMYSQL (Enum): [mysql+aiomysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.aiomysql)\n\n ORACLE_ORACLEDB_ASYNC (Enum): [oracle+oracledb_async](https://docs.sqlalchemy.org/en/20/dialects/oracle.html#module-sqlalchemy.dialects.oracle.oracledb)", "enum": [ "postgresql+asyncpg", "sqlite+aiosqlite", "mysql+asyncmy", - "mysql+aiomysql" - ] - }, - "SyncDriver": { - "title": "SyncDriver", - "description": "Known dialects with their corresponding sync drivers.\n\nAttributes:\n POSTGRESQL_PSYCOPG2 (Enum): [postgresql+psycopg2](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2)\n POSTGRESQL_PG8000 (Enum): [postgresql+pg8000](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pg8000)\n POSTGRESQL_PSYCOPG2CFFI (Enum): [postgresql+psycopg2cffi](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2cffi)\n POSTGRESQL_PYPOSTGRESQL (Enum): [postgresql+pypostgresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pypostgresql)\n POSTGRESQL_PYGRESQL (Enum): [postgresql+pygresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pygresql)\n\n MYSQL_MYSQLDB (Enum): [mysql+mysqldb](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqldb)\n MYSQL_PYMYSQL (Enum): [mysql+pymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pymysql)\n MYSQL_MYSQLCONNECTOR (Enum): [mysql+mysqlconnector](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector)\n MYSQL_CYMYSQL (Enum): [mysql+cymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.cymysql)\n MYSQL_OURSQL (Enum): [mysql+oursql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.oursql)\n MYSQL_PYODBC (Enum): [mysql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pyodbc)\n\n SQLITE_PYSQLITE (Enum): [sqlite+pysqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlite)\n SQLITE_PYSQLCIPHER (Enum): [sqlite+pysqlcipher](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlcipher)\n\n ORACLE_CX_ORACLE (Enum): [oracle+cx_oracle](https://docs.sqlalchemy.org/en/14/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle)\n\n MSSQL_PYODBC (Enum): [mssql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc)\n MSSQL_MXODBC (Enum): [mssql+mxodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.mxodbc)\n MSSQL_PYMSSQL (Enum): [mssql+pymssql](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pymssql)", - "enum": [ - "postgresql+psycopg2", - "postgresql+pg8000", - "postgresql+psycopg2cffi", - "postgresql+pypostgresql", - "postgresql+pygresql", - "mysql+mysqldb", - "mysql+pymysql", - "mysql+mysqlconnector", - "mysql+cymysql", - "mysql+oursql", - "mysql+pyodbc", - "sqlite+pysqlite", - "sqlite+pysqlcipher", - "oracle+cx_oracle", - "mssql+pyodbc", - "mssql+mxodbc", - "mssql+pymssql" - ] + "mysql+aiomysql", + "oracle+oracledb_async" + ], + "title": "AsyncDriver", + "type": "string" }, "ConnectionComponents": { - "title": "ConnectionComponents", "description": "Parameters to use to create a SQLAlchemy engine URL.\n\nAttributes:\n driver: The driver name to use.\n database: The name of the database to use.\n username: The user name used to authenticate.\n password: The password used to authenticate.\n host: The host address of the database.\n port: The port to connect to the database.\n query: A dictionary of string keys to string values to be passed to the dialect\n and/or the DBAPI upon connect.", - "type": "object", "properties": { "driver": { - "title": "Driver", - "description": "The driver name to use.", "anyOf": [ { "$ref": "#/definitions/AsyncDriver" @@ -7480,53 +7338,129 @@ { "type": "string" } - ] + ], + "description": "The driver name to use.", + "title": "Driver" }, "database": { - "title": "Database", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The name of the database to use.", - "type": "string" + "title": "Database" }, "username": { - "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The user name used to authenticate.", - "type": "string" + "title": "Username" }, "password": { - "title": "Password", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "The password used to authenticate.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Password" }, "host": { - "title": "Host", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The host address of the database.", - "type": "string" + "title": "Host" }, "port": { - "title": "Port", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, "description": "The port to connect to the database.", - "type": "string" + "title": "Port" }, "query": { - "title": "Query", + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "A dictionary of string keys to string values to be passed to the dialect and/or the DBAPI upon connect. To specify non-string parameters to a Python DBAPI directly, use connect_args.", - "type": "object", - "additionalProperties": { - "type": "string" - } + "title": "Query" } }, "required": [ - "driver", - "database" - ] + "driver" + ], + "title": "ConnectionComponents", + "type": "object" + }, + "SyncDriver": { + "description": "Known dialects with their corresponding sync drivers.\n\nAttributes:\n POSTGRESQL_PSYCOPG2 (Enum): [postgresql+psycopg2](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2)\n POSTGRESQL_PG8000 (Enum): [postgresql+pg8000](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pg8000)\n POSTGRESQL_PSYCOPG2CFFI (Enum): [postgresql+psycopg2cffi](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2cffi)\n POSTGRESQL_PYPOSTGRESQL (Enum): [postgresql+pypostgresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pypostgresql)\n POSTGRESQL_PYGRESQL (Enum): [postgresql+pygresql](https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.pygresql)\n\n MYSQL_MYSQLDB (Enum): [mysql+mysqldb](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqldb)\n MYSQL_PYMYSQL (Enum): [mysql+pymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pymysql)\n MYSQL_MYSQLCONNECTOR (Enum): [mysql+mysqlconnector](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector)\n MYSQL_CYMYSQL (Enum): [mysql+cymysql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.cymysql)\n MYSQL_OURSQL (Enum): [mysql+oursql](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.oursql)\n MYSQL_PYODBC (Enum): [mysql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pyodbc)\n\n SQLITE_PYSQLITE (Enum): [sqlite+pysqlite](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlite)\n SQLITE_PYSQLCIPHER (Enum): [sqlite+pysqlcipher](https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlcipher)\n\n ORACLE_CX_ORACLE (Enum): [oracle+cx_oracle](https://docs.sqlalchemy.org/en/14/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle)\n ORACLE_ORACLEDB (Enum): [oracle+oracledb](https://docs.sqlalchemy.org/en/20/dialects/oracle.html#module-sqlalchemy.dialects.oracle.oracledb)\n\n MSSQL_PYODBC (Enum): [mssql+pyodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc)\n MSSQL_MXODBC (Enum): [mssql+mxodbc](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.mxodbc)\n MSSQL_PYMSSQL (Enum): [mssql+pymssql](https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pymssql)", + "enum": [ + "postgresql+psycopg2", + "postgresql+pg8000", + "postgresql+psycopg2cffi", + "postgresql+pypostgresql", + "postgresql+pygresql", + "mysql+mysqldb", + "mysql+pymysql", + "mysql+mysqlconnector", + "mysql+cymysql", + "mysql+oursql", + "mysql+pyodbc", + "sqlite+pysqlite", + "sqlite+pysqlcipher", + "oracle+cx_oracle", + "oracle+oracledb", + "mssql+pyodbc", + "mssql+mxodbc", + "mssql+pymssql" + ], + "title": "SyncDriver", + "type": "string" } } }, "capabilities": [], - "version": "0.4.0" + "version": "0.5.3" } } } From a6f8801b59e4b3900c951c056a4d752df5e16674 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:16 -0500 Subject: [PATCH 17/42] Add `prefect-sqlalchemy` `v0.5.3` to worker records --- collections/prefect-sqlalchemy/workers/v0.5.3.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-sqlalchemy/workers/v0.5.3.json diff --git a/collections/prefect-sqlalchemy/workers/v0.5.3.json b/collections/prefect-sqlalchemy/workers/v0.5.3.json new file mode 100644 index 000000000..a1638a3e4 --- /dev/null +++ b/collections/prefect-sqlalchemy/workers/v0.5.3.json @@ -0,0 +1,3 @@ +{ + "prefect-sqlalchemy": {} +} \ No newline at end of file From 8bc48d37b7f667674543471eeb9e8f5ed2519a5c Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:30 -0500 Subject: [PATCH 18/42] Add `prefect-shell` `v0.3.1` to block records --- collections/prefect-shell/blocks/v0.3.1.json | 91 ++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 collections/prefect-shell/blocks/v0.3.1.json diff --git a/collections/prefect-shell/blocks/v0.3.1.json b/collections/prefect-shell/blocks/v0.3.1.json new file mode 100644 index 000000000..0dc4b347c --- /dev/null +++ b/collections/prefect-shell/blocks/v0.3.1.json @@ -0,0 +1,91 @@ +{ + "prefect-shell": { + "block_types": { + "shell-operation": { + "name": "Shell Operation", + "slug": "shell-operation", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/0b47a017e1b40381de770c17647c49cdf6388d1c-250x250.png", + "documentation_url": "https://prefecthq.github.io/prefect-shell/commands/#prefect_shell.commands.ShellOperation", + "description": "A block representing a shell operation, containing multiple commands.\n\nFor long-lasting operations, use the trigger method and utilize the block as a\ncontext manager for automatic closure of processes when context is exited.\nIf not, manually call the close method to close processes.\n\nFor short-lasting operations, use the run method. Context is automatically managed\nwith this method. This block is part of the prefect-shell collection. Install prefect-shell with `pip install prefect-shell` to use this block.", + "code_example": "Load a configured block:\n```python\nfrom prefect_shell import ShellOperation\n\nshell_operation = ShellOperation.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:56c42125a85e8506e96dc84a3427e6bafb9971f6be749dce88f0b689849bab56", + "fields": { + "block_schema_references": {}, + "block_type_slug": "shell-operation", + "description": "A block representing a shell operation, containing multiple commands.\n\nFor long-lasting operations, use the trigger method and utilize the block as a\ncontext manager for automatic closure of processes when context is exited.\nIf not, manually call the close method to close processes.\n\nFor short-lasting operations, use the run method. Context is automatically managed\nwith this method.", + "properties": { + "commands": { + "description": "A list of commands to execute sequentially.", + "items": { + "type": "string" + }, + "title": "Commands", + "type": "array" + }, + "stream_output": { + "default": true, + "description": "Whether to stream output.", + "title": "Stream Output", + "type": "boolean" + }, + "env": { + "description": "Environment variables to use for the subprocess.", + "title": "Environment Variables", + "type": "object" + }, + "working_dir": { + "anyOf": [ + { + "format": "directory-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The absolute path to the working directory the command will be executed within.", + "title": "Working Directory" + }, + "shell": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The shell to run the command with; if unset, defaults to `powershell` on Windows and `bash` on other platforms.", + "title": "Shell" + }, + "extension": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The extension to use for the temporary file; if unset, defaults to `.ps1` on Windows and `.sh` on other platforms.", + "title": "Extension" + } + }, + "required": [ + "commands" + ], + "secret_fields": [], + "title": "ShellOperation", + "type": "object" + }, + "capabilities": [], + "version": "0.3.1" + } + } + } + } +} \ No newline at end of file From 2a48f7dc1ba7aab6df4a07d83552e7aed6ec884a Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:30 -0500 Subject: [PATCH 19/42] Add `prefect-databricks` `v0.3.2` to block records --- .../prefect-databricks/blocks/v0.3.2.json | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 collections/prefect-databricks/blocks/v0.3.2.json diff --git a/collections/prefect-databricks/blocks/v0.3.2.json b/collections/prefect-databricks/blocks/v0.3.2.json new file mode 100644 index 000000000..c92a6a32f --- /dev/null +++ b/collections/prefect-databricks/blocks/v0.3.2.json @@ -0,0 +1,61 @@ +{ + "prefect-databricks": { + "block_types": { + "databricks-credentials": { + "name": "Databricks Credentials", + "slug": "databricks-credentials", + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/5GTHI1PH2dTiantfps6Fnc/1c750fab7f4c14ea1b93a62b9fea6a94/databricks_logo_icon_170295.png?h=250", + "documentation_url": null, + "description": "Block used to manage Databricks authentication. This block is part of the prefect-databricks collection. Install prefect-databricks with `pip install prefect-databricks` to use this block.", + "code_example": "Load stored Databricks credentials:\n```python\nfrom prefect_databricks import DatabricksCredentials\ndatabricks_credentials_block = DatabricksCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:249270ea944c28ccb5737053cd0dcac316916185935b19785f7a12785b22d3eb", + "fields": { + "block_schema_references": {}, + "block_type_slug": "databricks-credentials", + "description": "Block used to manage Databricks authentication.", + "properties": { + "databricks_instance": { + "description": "Databricks instance used in formatting the endpoint URL.", + "title": "Databricks Instance", + "type": "string" + }, + "token": { + "description": "The token to authenticate with Databricks.", + "format": "password", + "title": "Token", + "type": "string", + "writeOnly": true + }, + "client_kwargs": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Additional keyword arguments to pass to AsyncClient.", + "title": "Client Kwargs" + } + }, + "required": [ + "databricks_instance", + "token" + ], + "secret_fields": [ + "token" + ], + "title": "DatabricksCredentials", + "type": "object" + }, + "capabilities": [], + "version": "0.3.2" + } + } + } + } +} \ No newline at end of file From 8975c710b97da3d896bd38c9bc9b984db9d4a50e Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:32 -0500 Subject: [PATCH 20/42] Update aggregate block metadata with `prefect-databricks` `v0.3.2` --- views/aggregate-block-metadata.json | 37 ++++++++++++++++++----------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index d016e8a58..0b47e4b6d 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -3057,47 +3057,56 @@ "databricks-credentials": { "name": "Databricks Credentials", "slug": "databricks-credentials", - "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/ff9a2573c23954bedd27b0f420465a55b1a99dfd-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-databricks/credentials/#prefect_databricks.credentials.DatabricksCredentials", + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/5GTHI1PH2dTiantfps6Fnc/1c750fab7f4c14ea1b93a62b9fea6a94/databricks_logo_icon_170295.png?h=250", + "documentation_url": null, "description": "Block used to manage Databricks authentication. This block is part of the prefect-databricks collection. Install prefect-databricks with `pip install prefect-databricks` to use this block.", "code_example": "Load stored Databricks credentials:\n```python\nfrom prefect_databricks import DatabricksCredentials\ndatabricks_credentials_block = DatabricksCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:58bae1446ee7a01ec90d15cf756f8acc221329e3b3580b077b508ff0f2425e35", + "checksum": "sha256:249270ea944c28ccb5737053cd0dcac316916185935b19785f7a12785b22d3eb", "fields": { - "title": "DatabricksCredentials", + "block_schema_references": {}, + "block_type_slug": "databricks-credentials", "description": "Block used to manage Databricks authentication.", - "type": "object", "properties": { "databricks_instance": { - "title": "Databricks Instance", "description": "Databricks instance used in formatting the endpoint URL.", + "title": "Databricks Instance", "type": "string" }, "token": { - "title": "Token", "description": "The token to authenticate with Databricks.", + "format": "password", + "title": "Token", "type": "string", - "writeOnly": true, - "format": "password" + "writeOnly": true }, "client_kwargs": { - "title": "Client Kwargs", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "Additional keyword arguments to pass to AsyncClient.", - "type": "object" + "title": "Client Kwargs" } }, "required": [ "databricks_instance", "token" ], - "block_type_slug": "databricks-credentials", "secret_fields": [ "token" ], - "block_schema_references": {} + "title": "DatabricksCredentials", + "type": "object" }, "capabilities": [], - "version": "0.2.3" + "version": "0.3.2" } } } From bf41e2c78f418c77d45939221552e70c670de3db Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:33 -0500 Subject: [PATCH 21/42] Add `prefect-databricks` `v0.3.2` to worker records --- collections/prefect-databricks/workers/v0.3.2.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-databricks/workers/v0.3.2.json diff --git a/collections/prefect-databricks/workers/v0.3.2.json b/collections/prefect-databricks/workers/v0.3.2.json new file mode 100644 index 000000000..abc6fd4f7 --- /dev/null +++ b/collections/prefect-databricks/workers/v0.3.2.json @@ -0,0 +1,3 @@ +{ + "prefect-databricks": {} +} \ No newline at end of file From 258e7c183d8e35b1d404750e684969b2a1a677cd Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:35 -0500 Subject: [PATCH 22/42] Update aggregate block metadata with `prefect-shell` `v0.3.1` --- views/aggregate-block-metadata.json | 67 +++++++++++++++++++---------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 0b47e4b6d..979cfd14d 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -6886,60 +6886,81 @@ "description": "A block representing a shell operation, containing multiple commands.\n\nFor long-lasting operations, use the trigger method and utilize the block as a\ncontext manager for automatic closure of processes when context is exited.\nIf not, manually call the close method to close processes.\n\nFor short-lasting operations, use the run method. Context is automatically managed\nwith this method. This block is part of the prefect-shell collection. Install prefect-shell with `pip install prefect-shell` to use this block.", "code_example": "Load a configured block:\n```python\nfrom prefect_shell import ShellOperation\n\nshell_operation = ShellOperation.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:9525e2fd40af302916ff7a4c33ec9c0e20d8970b09243ca010d729fac144811d", + "checksum": "sha256:56c42125a85e8506e96dc84a3427e6bafb9971f6be749dce88f0b689849bab56", "fields": { - "title": "ShellOperation", + "block_schema_references": {}, + "block_type_slug": "shell-operation", "description": "A block representing a shell operation, containing multiple commands.\n\nFor long-lasting operations, use the trigger method and utilize the block as a\ncontext manager for automatic closure of processes when context is exited.\nIf not, manually call the close method to close processes.\n\nFor short-lasting operations, use the run method. Context is automatically managed\nwith this method.", - "type": "object", "properties": { "commands": { - "title": "Commands", "description": "A list of commands to execute sequentially.", - "type": "array", "items": { "type": "string" - } + }, + "title": "Commands", + "type": "array" }, "stream_output": { - "title": "Stream Output", - "description": "Whether to stream output.", "default": true, + "description": "Whether to stream output.", + "title": "Stream Output", "type": "boolean" }, "env": { - "title": "Environment Variables", "description": "Environment variables to use for the subprocess.", - "type": "object", - "additionalProperties": { - "type": "string" - } + "title": "Environment Variables", + "type": "object" }, "working_dir": { - "title": "Working Directory", + "anyOf": [ + { + "format": "directory-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The absolute path to the working directory the command will be executed within.", - "format": "directory-path", - "type": "string" + "title": "Working Directory" }, "shell": { - "title": "Shell", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The shell to run the command with; if unset, defaults to `powershell` on Windows and `bash` on other platforms.", - "type": "string" + "title": "Shell" }, "extension": { - "title": "Extension", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The extension to use for the temporary file; if unset, defaults to `.ps1` on Windows and `.sh` on other platforms.", - "type": "string" + "title": "Extension" } }, "required": [ "commands" ], - "block_type_slug": "shell-operation", "secret_fields": [], - "block_schema_references": {} + "title": "ShellOperation", + "type": "object" }, "capabilities": [], - "version": "0.2.2" + "version": "0.3.1" } } } From cf9087c4a5cbfa89b912171c8b530c61a87f40f7 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:36 -0500 Subject: [PATCH 23/42] Add `prefect-shell` `v0.3.1` to worker records --- collections/prefect-shell/workers/v0.3.1.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-shell/workers/v0.3.1.json diff --git a/collections/prefect-shell/workers/v0.3.1.json b/collections/prefect-shell/workers/v0.3.1.json new file mode 100644 index 000000000..6f165ad97 --- /dev/null +++ b/collections/prefect-shell/workers/v0.3.1.json @@ -0,0 +1,3 @@ +{ + "prefect-shell": {} +} \ No newline at end of file From 46baf165fb1c527e56d1d18048a777ff4cc45615 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:51 -0500 Subject: [PATCH 24/42] Add `prefect-email` `v0.4.2` to block records --- collections/prefect-email/blocks/v0.4.2.json | 129 +++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 collections/prefect-email/blocks/v0.4.2.json diff --git a/collections/prefect-email/blocks/v0.4.2.json b/collections/prefect-email/blocks/v0.4.2.json new file mode 100644 index 000000000..88f4e9324 --- /dev/null +++ b/collections/prefect-email/blocks/v0.4.2.json @@ -0,0 +1,129 @@ +{ + "prefect-email": { + "block_types": { + "email-server-credentials": { + "name": "Email Server Credentials", + "slug": "email-server-credentials", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/82bc6ed16ca42a2252a5512c72233a253b8a58eb-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-email", + "description": "Block used to manage generic email server authentication.\nIt is recommended you use a\n[Google App Password](https://support.google.com/accounts/answer/185833)\nif you use Gmail. This block is part of the prefect-email collection. Install prefect-email with `pip install prefect-email` to use this block.", + "code_example": "Load stored email server credentials:\n```python\nfrom prefect_email import EmailServerCredentials\nemail_credentials_block = EmailServerCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:d1c42d3fe8f599348bc0e46078ebebc13777a245256449db0cb8fec571210563", + "fields": { + "block_schema_references": {}, + "block_type_slug": "email-server-credentials", + "description": "Block used to manage generic email server authentication.\nIt is recommended you use a\n[Google App Password](https://support.google.com/accounts/answer/185833)\nif you use Gmail.", + "properties": { + "username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The username to use for authentication to the server. Unnecessary if SMTP login is not required.", + "title": "Username" + }, + "password": { + "description": "The password to use for authentication to the server. Unnecessary if SMTP login is not required.", + "format": "password", + "title": "Password", + "type": "string", + "writeOnly": true + }, + "smtp_server": { + "anyOf": [ + { + "$ref": "#/definitions/SMTPServer" + }, + { + "type": "string" + } + ], + "default": "smtp.gmail.com", + "description": "Either the hostname of the SMTP server, or one of the keys from the built-in SMTPServer Enum members, like 'gmail'.", + "title": "SMTP Server" + }, + "smtp_type": { + "anyOf": [ + { + "$ref": "#/definitions/SMTPType" + }, + { + "type": "string" + } + ], + "default": 465, + "description": "Either 'SSL', 'STARTTLS', or 'INSECURE'.", + "title": "SMTP Type" + }, + "smtp_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "If provided, overrides the smtp_type's default port number.", + "title": "SMTP Port" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": true, + "description": "If `False`, SSL certificates will not be verified. Default to `True`.", + "title": "Verify" + } + }, + "secret_fields": [ + "password" + ], + "title": "EmailServerCredentials", + "type": "object", + "definitions": { + "SMTPServer": { + "description": "Server used to send email.", + "enum": [ + "smtp.aol.com", + "smtp.mail.att.net", + "smtp.comcast.net", + "smtp.mail.me.com", + "smtp.gmail.com", + "smtp-mail.outlook.com", + "smtp.mail.yahoo.com" + ], + "title": "SMTPServer", + "type": "string" + }, + "SMTPType": { + "description": "Protocols used to secure email transmissions.", + "enum": [ + 465, + 587, + 25 + ], + "title": "SMTPType", + "type": "integer" + } + } + }, + "capabilities": [], + "version": "0.4.2" + } + } + } + } +} \ No newline at end of file From 2e17f32418f9c464b19ba206ad2116906a9d443f Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:53 -0500 Subject: [PATCH 25/42] Update aggregate block metadata with `prefect-email` `v0.4.2` --- views/aggregate-block-metadata.json | 83 ++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 26 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 979cfd14d..2b01be8df 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -5804,32 +5804,37 @@ "name": "Email Server Credentials", "slug": "email-server-credentials", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/82bc6ed16ca42a2252a5512c72233a253b8a58eb-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-email/credentials/#prefect_email.credentials.EmailServerCredentials", + "documentation_url": "https://docs.prefect.io/integrations/prefect-email", "description": "Block used to manage generic email server authentication.\nIt is recommended you use a\n[Google App Password](https://support.google.com/accounts/answer/185833)\nif you use Gmail. This block is part of the prefect-email collection. Install prefect-email with `pip install prefect-email` to use this block.", "code_example": "Load stored email server credentials:\n```python\nfrom prefect_email import EmailServerCredentials\nemail_credentials_block = EmailServerCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:56d6491f4b2d4aaae5ce604652416f44d0c8fa39ca68c5f747aee7cb518a41d0", + "checksum": "sha256:d1c42d3fe8f599348bc0e46078ebebc13777a245256449db0cb8fec571210563", "fields": { - "title": "EmailServerCredentials", + "block_schema_references": {}, + "block_type_slug": "email-server-credentials", "description": "Block used to manage generic email server authentication.\nIt is recommended you use a\n[Google App Password](https://support.google.com/accounts/answer/185833)\nif you use Gmail.", - "type": "object", "properties": { "username": { - "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The username to use for authentication to the server. Unnecessary if SMTP login is not required.", - "type": "string" + "title": "Username" }, "password": { - "title": "Password", "description": "The password to use for authentication to the server. Unnecessary if SMTP login is not required.", + "format": "password", + "title": "Password", "type": "string", - "writeOnly": true, - "format": "password" + "writeOnly": true }, "smtp_server": { - "title": "SMTP Server", - "description": "Either the hostname of the SMTP server, or one of the keys from the built-in SMTPServer Enum members, like 'gmail'.", - "default": "smtp.gmail.com", "anyOf": [ { "$ref": "#/definitions/SMTPServer" @@ -5837,12 +5842,12 @@ { "type": "string" } - ] + ], + "default": "smtp.gmail.com", + "description": "Either the hostname of the SMTP server, or one of the keys from the built-in SMTPServer Enum members, like 'gmail'.", + "title": "SMTP Server" }, "smtp_type": { - "title": "SMTP Type", - "description": "Either 'SSL', 'STARTTLS', or 'INSECURE'.", - "default": 465, "anyOf": [ { "$ref": "#/definitions/SMTPType" @@ -5850,22 +5855,45 @@ { "type": "string" } - ] + ], + "default": 465, + "description": "Either 'SSL', 'STARTTLS', or 'INSECURE'.", + "title": "SMTP Type" }, "smtp_port": { - "title": "SMTP Port", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, "description": "If provided, overrides the smtp_type's default port number.", - "type": "integer" + "title": "SMTP Port" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": true, + "description": "If `False`, SSL certificates will not be verified. Default to `True`.", + "title": "Verify" } }, - "block_type_slug": "email-server-credentials", "secret_fields": [ "password" ], - "block_schema_references": {}, + "title": "EmailServerCredentials", + "type": "object", "definitions": { "SMTPServer": { - "title": "SMTPServer", "description": "Server used to send email.", "enum": [ "smtp.aol.com", @@ -5875,21 +5903,24 @@ "smtp.gmail.com", "smtp-mail.outlook.com", "smtp.mail.yahoo.com" - ] + ], + "title": "SMTPServer", + "type": "string" }, "SMTPType": { - "title": "SMTPType", "description": "Protocols used to secure email transmissions.", "enum": [ 465, 587, 25 - ] + ], + "title": "SMTPType", + "type": "integer" } } }, "capabilities": [], - "version": "0.3.2" + "version": "0.4.2" } } } From ceafd7281b9ec7553a11bb6abae048f391b91e9c Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:54 -0500 Subject: [PATCH 26/42] Add `prefect-gitlab` `v0.3.2` to block records --- collections/prefect-gitlab/blocks/v0.3.2.json | 180 ++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 collections/prefect-gitlab/blocks/v0.3.2.json diff --git a/collections/prefect-gitlab/blocks/v0.3.2.json b/collections/prefect-gitlab/blocks/v0.3.2.json new file mode 100644 index 000000000..643c2cc25 --- /dev/null +++ b/collections/prefect-gitlab/blocks/v0.3.2.json @@ -0,0 +1,180 @@ +{ + "prefect-gitlab": { + "block_types": { + "gitlab-credentials": { + "name": "GitLab Credentials", + "slug": "gitlab-credentials", + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/55edIimT4g9gbjhkh5a3Sp/dfdb9391d8f45c2e93e72e3a4d350771/gitlab-logo-500.png?h=250", + "documentation_url": null, + "description": "Store a GitLab personal access token to interact with private GitLab\nrepositories. This block is part of the prefect-gitlab collection. Install prefect-gitlab with `pip install prefect-gitlab` to use this block.", + "code_example": "Load stored GitLab credentials:\n```python\nfrom prefect_gitlab import GitLabCredentials\ngitlab_credentials_block = GitLabCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:95ec4ee25e796c17a02bf8938b7a6fea1266b4a8e06596a695a318638d53ccf2", + "fields": { + "block_schema_references": {}, + "block_type_slug": "gitlab-credentials", + "description": "Store a GitLab personal access token to interact with private GitLab\nrepositories.", + "properties": { + "token": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GitLab Personal Access Token with read_repository scope.", + "title": "Personal Access Token" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "URL to self-hosted GitLab instances.", + "title": "URL" + } + }, + "secret_fields": [ + "token" + ], + "title": "GitLabCredentials", + "type": "object" + }, + "capabilities": [], + "version": "0.3.2" + } + }, + "gitlab-repository": { + "name": "GitLab Repository", + "slug": "gitlab-repository", + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/55edIimT4g9gbjhkh5a3Sp/dfdb9391d8f45c2e93e72e3a4d350771/gitlab-logo-500.png?h=250", + "documentation_url": null, + "description": "Interact with files stored in GitLab repositories. This block is part of the prefect-gitlab collection. Install prefect-gitlab with `pip install prefect-gitlab` to use this block.", + "code_example": "```python\nfrom prefect_gitlab.repositories import GitLabRepository\n\ngitlab_repository_block = GitLabRepository.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:09346e2c824226dee42de0d2f054cf8b0a4fed779c98d1afb27cddf196f5b9e5", + "fields": { + "block_schema_references": { + "credentials": { + "block_schema_checksum": "sha256:95ec4ee25e796c17a02bf8938b7a6fea1266b4a8e06596a695a318638d53ccf2", + "block_type_slug": "gitlab-credentials" + } + }, + "block_type_slug": "gitlab-repository", + "description": "Interact with files stored in GitLab repositories.", + "properties": { + "repository": { + "description": "The URL of a GitLab repository to read from, in either HTTP/HTTPS or SSH format.", + "title": "Repository", + "type": "string" + }, + "reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional reference to pin to; can be a branch name or tag.", + "title": "Reference" + }, + "git_depth": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 1, + "description": "The number of commits that Git history is truncated to during cloning. Set to None to fetch the entire history.", + "gte": 1, + "title": "Git Depth" + }, + "credentials": { + "anyOf": [ + { + "$ref": "#/definitions/GitLabCredentials" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional GitLab Credentials block for authenticating with private GitLab repos." + } + }, + "required": [ + "repository" + ], + "secret_fields": [ + "credentials.token" + ], + "title": "GitLabRepository", + "type": "object", + "definitions": { + "GitLabCredentials": { + "block_schema_references": {}, + "block_type_slug": "gitlab-credentials", + "description": "Store a GitLab personal access token to interact with private GitLab\nrepositories.", + "properties": { + "token": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GitLab Personal Access Token with read_repository scope.", + "title": "Personal Access Token" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "URL to self-hosted GitLab instances.", + "title": "URL" + } + }, + "secret_fields": [ + "token" + ], + "title": "GitLabCredentials", + "type": "object" + } + } + }, + "capabilities": [ + "get-directory" + ], + "version": "0.3.2" + } + } + } + } +} \ No newline at end of file From 1c705eeb0678b9d8280337ab8ca2dfd481c0ef36 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:55 -0500 Subject: [PATCH 27/42] Update aggregate block metadata with `prefect-gitlab` `v0.3.2` --- views/aggregate-block-metadata.json | 143 +++++++++++++++++++--------- 1 file changed, 99 insertions(+), 44 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 2b01be8df..daa008ac1 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -6680,120 +6680,175 @@ "gitlab-credentials": { "name": "GitLab Credentials", "slug": "gitlab-credentials", - "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/a5db0f07a1bb4390f0e1cda9f7ef9091d89633b9-250x250.png", + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/55edIimT4g9gbjhkh5a3Sp/dfdb9391d8f45c2e93e72e3a4d350771/gitlab-logo-500.png?h=250", "documentation_url": null, "description": "Store a GitLab personal access token to interact with private GitLab\nrepositories. This block is part of the prefect-gitlab collection. Install prefect-gitlab with `pip install prefect-gitlab` to use this block.", "code_example": "Load stored GitLab credentials:\n```python\nfrom prefect_gitlab import GitLabCredentials\ngitlab_credentials_block = GitLabCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:7d8d6317127bc66afe9e97ae5658ee8e1decdc598350eb292fb62be379f0246c", + "checksum": "sha256:95ec4ee25e796c17a02bf8938b7a6fea1266b4a8e06596a695a318638d53ccf2", "fields": { - "title": "GitLabCredentials", + "block_schema_references": {}, + "block_type_slug": "gitlab-credentials", "description": "Store a GitLab personal access token to interact with private GitLab\nrepositories.", - "type": "object", "properties": { "token": { - "title": "Token", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A GitLab Personal Access Token with read_repository scope.", - "name": "Personal Access Token", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Personal Access Token" }, "url": { - "title": "URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "URL to self-hosted GitLab instances.", - "type": "string" + "title": "URL" } }, - "block_type_slug": "gitlab-credentials", "secret_fields": [ "token" ], - "block_schema_references": {} + "title": "GitLabCredentials", + "type": "object" }, "capabilities": [], - "version": "0.2.2" + "version": "0.3.2" } }, "gitlab-repository": { "name": "GitLab Repository", "slug": "gitlab-repository", - "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/a5db0f07a1bb4390f0e1cda9f7ef9091d89633b9-250x250.png", + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/55edIimT4g9gbjhkh5a3Sp/dfdb9391d8f45c2e93e72e3a4d350771/gitlab-logo-500.png?h=250", "documentation_url": null, "description": "Interact with files stored in GitLab repositories. This block is part of the prefect-gitlab collection. Install prefect-gitlab with `pip install prefect-gitlab` to use this block.", "code_example": "```python\nfrom prefect_gitlab.repositories import GitLabRepository\n\ngitlab_repository_block = GitLabRepository.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:ac874a97e2ff2403a4b63181b6ae85dd51b4a0df0337d290d922627f5123af44", + "checksum": "sha256:09346e2c824226dee42de0d2f054cf8b0a4fed779c98d1afb27cddf196f5b9e5", "fields": { - "title": "GitLabRepository", + "block_schema_references": { + "credentials": { + "block_schema_checksum": "sha256:95ec4ee25e796c17a02bf8938b7a6fea1266b4a8e06596a695a318638d53ccf2", + "block_type_slug": "gitlab-credentials" + } + }, + "block_type_slug": "gitlab-repository", "description": "Interact with files stored in GitLab repositories.", - "type": "object", "properties": { "repository": { - "title": "Repository", "description": "The URL of a GitLab repository to read from, in either HTTP/HTTPS or SSH format.", + "title": "Repository", "type": "string" }, "reference": { - "title": "Reference", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "An optional reference to pin to; can be a branch name or tag.", - "type": "string" + "title": "Reference" + }, + "git_depth": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 1, + "description": "The number of commits that Git history is truncated to during cloning. Set to None to fetch the entire history.", + "gte": 1, + "title": "Git Depth" }, "credentials": { - "title": "Credentials", - "description": "An optional GitLab Credentials block for authenticating with private GitLab repos.", - "allOf": [ + "anyOf": [ { "$ref": "#/definitions/GitLabCredentials" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "An optional GitLab Credentials block for authenticating with private GitLab repos." } }, "required": [ "repository" ], - "block_type_slug": "gitlab-repository", "secret_fields": [ "credentials.token" ], - "block_schema_references": { - "credentials": { - "block_type_slug": "gitlab-credentials", - "block_schema_checksum": "sha256:7d8d6317127bc66afe9e97ae5658ee8e1decdc598350eb292fb62be379f0246c" - } - }, + "title": "GitLabRepository", + "type": "object", "definitions": { "GitLabCredentials": { - "title": "GitLabCredentials", + "block_schema_references": {}, + "block_type_slug": "gitlab-credentials", "description": "Store a GitLab personal access token to interact with private GitLab\nrepositories.", - "type": "object", "properties": { "token": { - "title": "Token", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A GitLab Personal Access Token with read_repository scope.", - "name": "Personal Access Token", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Personal Access Token" }, "url": { - "title": "URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "URL to self-hosted GitLab instances.", - "type": "string" + "title": "URL" } }, - "block_type_slug": "gitlab-credentials", "secret_fields": [ "token" ], - "block_schema_references": {} + "title": "GitLabCredentials", + "type": "object" } } }, "capabilities": [ "get-directory" ], - "version": "0.2.2" + "version": "0.3.2" } } } From 8189d755cd90cc2db321a2736dd291d73ada2e87 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:06:57 -0500 Subject: [PATCH 28/42] Add `prefect-gitlab` `v0.3.2` to worker records --- collections/prefect-gitlab/workers/v0.3.2.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-gitlab/workers/v0.3.2.json diff --git a/collections/prefect-gitlab/workers/v0.3.2.json b/collections/prefect-gitlab/workers/v0.3.2.json new file mode 100644 index 000000000..75d1ad990 --- /dev/null +++ b/collections/prefect-gitlab/workers/v0.3.2.json @@ -0,0 +1,3 @@ +{ + "prefect-gitlab": {} +} \ No newline at end of file From c9e4fe70b46158c7d6fc191951688f67f94d35ca Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:15 -0500 Subject: [PATCH 29/42] Add `prefect-github` `v0.3.2` to block records --- collections/prefect-github/blocks/v0.3.2.json | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 collections/prefect-github/blocks/v0.3.2.json diff --git a/collections/prefect-github/blocks/v0.3.2.json b/collections/prefect-github/blocks/v0.3.2.json new file mode 100644 index 000000000..101a07fc1 --- /dev/null +++ b/collections/prefect-github/blocks/v0.3.2.json @@ -0,0 +1,140 @@ +{ + "prefect-github": { + "block_types": { + "github-credentials": { + "name": "GitHub Credentials", + "slug": "github-credentials", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/41971cfecfea5f79ff334164f06ecb34d1038dd4-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-github", + "description": "Block used to manage GitHub authentication. This block is part of the prefect-github collection. Install prefect-github with `pip install prefect-github` to use this block.", + "code_example": "Load stored GitHub credentials:\n```python\nfrom prefect_github import GitHubCredentials\ngithub_credentials_block = GitHubCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:10cc102efa9f3bd4d727d8a9671f85aeec19a65c7c42eb96499c22ae456dfbb4", + "fields": { + "block_schema_references": {}, + "block_type_slug": "github-credentials", + "description": "Block used to manage GitHub authentication.", + "properties": { + "token": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GitHub personal access token (PAT).", + "title": "Token" + } + }, + "secret_fields": [ + "token" + ], + "title": "GitHubCredentials", + "type": "object" + }, + "capabilities": [], + "version": "0.3.2" + } + }, + "github-repository": { + "name": "GitHub Repository", + "slug": "github-repository", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/41971cfecfea5f79ff334164f06ecb34d1038dd4-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-github", + "description": "Interact with files stored on GitHub repositories. This block is part of the prefect-github collection. Install prefect-github with `pip install prefect-github` to use this block.", + "code_example": "```python\nfrom prefect_github.repository import GitHubRepository\n\ngithub_repository_block = GitHubRepository.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:57ddaeb7b7f23695cd8ae92cb4d7b1afda25bf2699d73f302f4d8adfb88ccd5c", + "fields": { + "block_schema_references": { + "credentials": { + "block_schema_checksum": "sha256:10cc102efa9f3bd4d727d8a9671f85aeec19a65c7c42eb96499c22ae456dfbb4", + "block_type_slug": "github-credentials" + } + }, + "block_type_slug": "github-repository", + "description": "Interact with files stored on GitHub repositories.", + "properties": { + "repository_url": { + "description": "The URL of a GitHub repository to read from, in either HTTPS or SSH format. If you are using a private repo, it must be in the HTTPS format.", + "title": "Repository URL", + "type": "string" + }, + "reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional reference to pin to; can be a branch name or tag.", + "title": "Reference" + }, + "credentials": { + "anyOf": [ + { + "$ref": "#/definitions/GitHubCredentials" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An optional GitHubCredentials block for using private GitHub repos." + } + }, + "required": [ + "repository_url" + ], + "secret_fields": [ + "credentials.token" + ], + "title": "GitHubRepository", + "type": "object", + "definitions": { + "GitHubCredentials": { + "block_schema_references": {}, + "block_type_slug": "github-credentials", + "description": "Block used to manage GitHub authentication.", + "properties": { + "token": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GitHub personal access token (PAT).", + "title": "Token" + } + }, + "secret_fields": [ + "token" + ], + "title": "GitHubCredentials", + "type": "object" + } + } + }, + "capabilities": [ + "get-directory" + ], + "version": "0.3.2" + } + } + } + } +} \ No newline at end of file From c0411c01e6265441e185d99da4ca7188f7f13ba7 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:16 -0500 Subject: [PATCH 30/42] Update aggregate block metadata with `prefect-github` `v0.3.2` --- views/aggregate-block-metadata.json | 103 ++++++++++++++++++---------- 1 file changed, 65 insertions(+), 38 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index daa008ac1..0820373f5 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -6570,107 +6570,134 @@ "name": "GitHub Credentials", "slug": "github-credentials", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/41971cfecfea5f79ff334164f06ecb34d1038dd4-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-github/credentials/#prefect_github.credentials.GitHubCredentials", + "documentation_url": "https://docs.prefect.io/integrations/prefect-github", "description": "Block used to manage GitHub authentication. This block is part of the prefect-github collection. Install prefect-github with `pip install prefect-github` to use this block.", "code_example": "Load stored GitHub credentials:\n```python\nfrom prefect_github import GitHubCredentials\ngithub_credentials_block = GitHubCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:74a34b668838ba661d9160ab127053dd44a22dd04e89562839645791e70d046a", + "checksum": "sha256:10cc102efa9f3bd4d727d8a9671f85aeec19a65c7c42eb96499c22ae456dfbb4", "fields": { - "title": "GitHubCredentials", + "block_schema_references": {}, + "block_type_slug": "github-credentials", "description": "Block used to manage GitHub authentication.", - "type": "object", "properties": { "token": { - "title": "Token", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A GitHub personal access token (PAT).", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Token" } }, - "block_type_slug": "github-credentials", "secret_fields": [ "token" ], - "block_schema_references": {} + "title": "GitHubCredentials", + "type": "object" }, "capabilities": [], - "version": "0.2.2" + "version": "0.3.2" } }, "github-repository": { "name": "GitHub Repository", "slug": "github-repository", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/41971cfecfea5f79ff334164f06ecb34d1038dd4-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-github/repository/#prefect_github.repository.GitHubRepository", + "documentation_url": "https://docs.prefect.io/integrations/prefect-github", "description": "Interact with files stored on GitHub repositories. This block is part of the prefect-github collection. Install prefect-github with `pip install prefect-github` to use this block.", "code_example": "```python\nfrom prefect_github.repository import GitHubRepository\n\ngithub_repository_block = GitHubRepository.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:3d2b2de1cd9336264ccc73f7078264d9053dc956941136516e18050c9953abf0", + "checksum": "sha256:57ddaeb7b7f23695cd8ae92cb4d7b1afda25bf2699d73f302f4d8adfb88ccd5c", "fields": { - "title": "GitHubRepository", + "block_schema_references": { + "credentials": { + "block_schema_checksum": "sha256:10cc102efa9f3bd4d727d8a9671f85aeec19a65c7c42eb96499c22ae456dfbb4", + "block_type_slug": "github-credentials" + } + }, + "block_type_slug": "github-repository", "description": "Interact with files stored on GitHub repositories.", - "type": "object", "properties": { "repository_url": { - "title": "Repository URL", "description": "The URL of a GitHub repository to read from, in either HTTPS or SSH format. If you are using a private repo, it must be in the HTTPS format.", + "title": "Repository URL", "type": "string" }, "reference": { - "title": "Reference", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "An optional reference to pin to; can be a branch name or tag.", - "type": "string" + "title": "Reference" }, "credentials": { - "title": "Credentials", - "description": "An optional GitHubCredentials block for using private GitHub repos.", - "allOf": [ + "anyOf": [ { "$ref": "#/definitions/GitHubCredentials" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "An optional GitHubCredentials block for using private GitHub repos." } }, "required": [ "repository_url" ], - "block_type_slug": "github-repository", "secret_fields": [ "credentials.token" ], - "block_schema_references": { - "credentials": { - "block_type_slug": "github-credentials", - "block_schema_checksum": "sha256:74a34b668838ba661d9160ab127053dd44a22dd04e89562839645791e70d046a" - } - }, + "title": "GitHubRepository", + "type": "object", "definitions": { "GitHubCredentials": { - "title": "GitHubCredentials", + "block_schema_references": {}, + "block_type_slug": "github-credentials", "description": "Block used to manage GitHub authentication.", - "type": "object", "properties": { "token": { - "title": "Token", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A GitHub personal access token (PAT).", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Token" } }, - "block_type_slug": "github-credentials", "secret_fields": [ "token" ], - "block_schema_references": {} + "title": "GitHubCredentials", + "type": "object" } } }, "capabilities": [ "get-directory" ], - "version": "0.2.2" + "version": "0.3.2" } } } From 0612c6a8bf223f20f8c062f6859c4ed3dc416fa7 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:17 -0500 Subject: [PATCH 31/42] Add `prefect-github` `v0.3.2` to worker records --- collections/prefect-github/workers/v0.3.2.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-github/workers/v0.3.2.json diff --git a/collections/prefect-github/workers/v0.3.2.json b/collections/prefect-github/workers/v0.3.2.json new file mode 100644 index 000000000..60a97c195 --- /dev/null +++ b/collections/prefect-github/workers/v0.3.2.json @@ -0,0 +1,3 @@ +{ + "prefect-github": {} +} \ No newline at end of file From 3c71345f0e1631b71eba8f404e4aa96f698bf047 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:33 -0500 Subject: [PATCH 32/42] Add `prefect-aws` `v0.6.0` to block records --- collections/prefect-aws/blocks/v0.6.0.json | 1054 ++++++++++++++++++++ 1 file changed, 1054 insertions(+) create mode 100644 collections/prefect-aws/blocks/v0.6.0.json diff --git a/collections/prefect-aws/blocks/v0.6.0.json b/collections/prefect-aws/blocks/v0.6.0.json new file mode 100644 index 000000000..42ebe783e --- /dev/null +++ b/collections/prefect-aws/blocks/v0.6.0.json @@ -0,0 +1,1054 @@ +{ + "prefect-aws": { + "block_types": { + "aws-credentials": { + "name": "AWS Credentials", + "slug": "aws-credentials", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", + "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", + "code_example": "Load stored AWS credentials:\n```python\nfrom prefect_aws import AwsCredentials\n\naws_credentials_block = AwsCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "fields": { + "block_schema_references": {}, + "block_type_slug": "aws-credentials", + "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", + "properties": { + "aws_access_key_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS access key ID.", + "title": "AWS Access Key ID" + }, + "aws_secret_access_key": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS secret access key.", + "title": "AWS Access Key Secret" + }, + "aws_session_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", + "title": "AWS Session Token" + }, + "profile_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The profile to use when creating your session.", + "title": "Profile Name" + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client.", + "title": "AWS Client Parameters" + } + }, + "secret_fields": [ + "aws_secret_access_key" + ], + "title": "AwsCredentials", + "type": "object", + "definitions": { + "AwsClientParameters": { + "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", + "properties": { + "api_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The API version to use.", + "title": "API Version" + }, + "use_ssl": { + "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", + "type": "boolean" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" + }, + "verify_cert_path": { + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the CA cert bundle to use.", + "title": "Certificate Authority Bundle File Path" + }, + "endpoint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The complete URL to use for the constructed client.", + "title": "Endpoint URL" + }, + "config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" + } + }, + "title": "AwsClientParameters", + "type": "object" + } + } + }, + "capabilities": [], + "version": "0.6.0" + } + }, + "aws-secret": { + "name": "AWS Secret", + "slug": "aws-secret", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", + "description": "Manages a secret in AWS's Secrets Manager. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", + "code_example": "```python\nfrom prefect_aws.secrets_manager import AwsSecret\n\naws_secret_block = AwsSecret.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:67f9d5acd8682089c12173e957d29944c6752df7d680cdc9a08095befe9204ba", + "fields": { + "block_schema_references": { + "aws_credentials": { + "block_schema_checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "block_type_slug": "aws-credentials" + } + }, + "block_type_slug": "aws-secret", + "description": "Manages a secret in AWS's Secrets Manager.", + "properties": { + "aws_credentials": { + "$ref": "#/definitions/AwsCredentials" + }, + "secret_name": { + "description": "The name of the secret.", + "title": "Secret Name", + "type": "string" + } + }, + "required": [ + "aws_credentials", + "secret_name" + ], + "secret_fields": [ + "aws_credentials.aws_secret_access_key" + ], + "title": "AwsSecret", + "type": "object", + "definitions": { + "AwsClientParameters": { + "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", + "properties": { + "api_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The API version to use.", + "title": "API Version" + }, + "use_ssl": { + "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", + "type": "boolean" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" + }, + "verify_cert_path": { + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the CA cert bundle to use.", + "title": "Certificate Authority Bundle File Path" + }, + "endpoint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The complete URL to use for the constructed client.", + "title": "Endpoint URL" + }, + "config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" + } + }, + "title": "AwsClientParameters", + "type": "object" + }, + "AwsCredentials": { + "block_schema_references": {}, + "block_type_slug": "aws-credentials", + "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", + "properties": { + "aws_access_key_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS access key ID.", + "title": "AWS Access Key ID" + }, + "aws_secret_access_key": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS secret access key.", + "title": "AWS Access Key Secret" + }, + "aws_session_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", + "title": "AWS Session Token" + }, + "profile_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The profile to use when creating your session.", + "title": "Profile Name" + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client.", + "title": "AWS Client Parameters" + } + }, + "secret_fields": [ + "aws_secret_access_key" + ], + "title": "AwsCredentials", + "type": "object" + } + } + }, + "capabilities": [], + "version": "0.6.0" + } + }, + "lambda-function": { + "name": "Lambda Function", + "slug": "lambda-function", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", + "description": "Invoke a Lambda function. This block is part of the prefect-aws\ncollection. Install prefect-aws with `pip install prefect-aws` to use this\nblock. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", + "code_example": "```python\nfrom prefect_aws.lambda_function import LambdaFunction\n\nlambda_function_block = LambdaFunction.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:2d9454b88c75f20a9ffccb0505f12729761e21f5c0a8f429535ff6669aebcd0f", + "fields": { + "block_schema_references": { + "aws_credentials": { + "block_schema_checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "block_type_slug": "aws-credentials" + } + }, + "block_type_slug": "lambda-function", + "description": "Invoke a Lambda function. This block is part of the prefect-aws\ncollection. Install prefect-aws with `pip install prefect-aws` to use this\nblock.", + "properties": { + "function_name": { + "description": "The name, ARN, or partial ARN of the Lambda function to run. This must be the name of a function that is already deployed to AWS Lambda.", + "title": "Function Name", + "type": "string" + }, + "qualifier": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version or alias of the Lambda function to use when invoked. If not specified, the latest (unqualified) version of the Lambda function will be used.", + "title": "Qualifier" + }, + "aws_credentials": { + "$ref": "#/definitions/AwsCredentials", + "description": "The AWS credentials to invoke the Lambda with.", + "title": "AWS Credentials" + } + }, + "required": [ + "function_name" + ], + "secret_fields": [ + "aws_credentials.aws_secret_access_key" + ], + "title": "LambdaFunction", + "type": "object", + "definitions": { + "AwsClientParameters": { + "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", + "properties": { + "api_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The API version to use.", + "title": "API Version" + }, + "use_ssl": { + "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", + "type": "boolean" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" + }, + "verify_cert_path": { + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the CA cert bundle to use.", + "title": "Certificate Authority Bundle File Path" + }, + "endpoint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The complete URL to use for the constructed client.", + "title": "Endpoint URL" + }, + "config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" + } + }, + "title": "AwsClientParameters", + "type": "object" + }, + "AwsCredentials": { + "block_schema_references": {}, + "block_type_slug": "aws-credentials", + "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", + "properties": { + "aws_access_key_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS access key ID.", + "title": "AWS Access Key ID" + }, + "aws_secret_access_key": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS secret access key.", + "title": "AWS Access Key Secret" + }, + "aws_session_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", + "title": "AWS Session Token" + }, + "profile_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The profile to use when creating your session.", + "title": "Profile Name" + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client.", + "title": "AWS Client Parameters" + } + }, + "secret_fields": [ + "aws_secret_access_key" + ], + "title": "AwsCredentials", + "type": "object" + } + } + }, + "capabilities": [], + "version": "0.6.0" + } + }, + "minio-credentials": { + "name": "MinIO Credentials", + "slug": "minio-credentials", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/676cb17bcbdff601f97e0a02ff8bcb480e91ff40-250x250.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", + "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", + "code_example": "Load stored MinIO credentials:\n```python\nfrom prefect_aws import MinIOCredentials\n\nminio_credentials_block = MinIOCredentials.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:c21bd87a12b6f17e5d40fbdd56f087e1636b3724bb60cb61d0b8c6bb5075609f", + "fields": { + "block_schema_references": {}, + "block_type_slug": "minio-credentials", + "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations.", + "properties": { + "minio_root_user": { + "description": "Admin or root user.", + "title": "Minio Root User", + "type": "string" + }, + "minio_root_password": { + "description": "Admin or root password.", + "format": "password", + "title": "Minio Root Password", + "type": "string", + "writeOnly": true + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client." + } + }, + "required": [ + "minio_root_user", + "minio_root_password" + ], + "secret_fields": [ + "minio_root_password" + ], + "title": "MinIOCredentials", + "type": "object", + "definitions": { + "AwsClientParameters": { + "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", + "properties": { + "api_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The API version to use.", + "title": "API Version" + }, + "use_ssl": { + "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", + "type": "boolean" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" + }, + "verify_cert_path": { + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the CA cert bundle to use.", + "title": "Certificate Authority Bundle File Path" + }, + "endpoint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The complete URL to use for the constructed client.", + "title": "Endpoint URL" + }, + "config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" + } + }, + "title": "AwsClientParameters", + "type": "object" + } + } + }, + "capabilities": [], + "version": "0.6.0" + } + }, + "s3-bucket": { + "name": "S3 Bucket", + "slug": "s3-bucket", + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", + "description": "Block used to store data using AWS S3 or S3-compatible object storage like MinIO. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", + "code_example": "```python\nfrom prefect_aws.s3 import S3Bucket\n\ns3_bucket_block = S3Bucket.load(\"BLOCK_NAME\")\n```", + "block_schema": { + "checksum": "sha256:b374eb01ebd176b97b02a6529b60c215d20eb003c1f9d1de8cdc5e4ae641cd14", + "fields": { + "block_schema_references": { + "credentials": [ + { + "block_schema_checksum": "sha256:c21bd87a12b6f17e5d40fbdd56f087e1636b3724bb60cb61d0b8c6bb5075609f", + "block_type_slug": "minio-credentials" + }, + { + "block_schema_checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "block_type_slug": "aws-credentials" + } + ] + }, + "block_type_slug": "s3-bucket", + "description": "Block used to store data using AWS S3 or S3-compatible object storage like MinIO.", + "properties": { + "bucket_name": { + "description": "Name of your bucket.", + "title": "Bucket Name", + "type": "string" + }, + "credentials": { + "anyOf": [ + { + "$ref": "#/definitions/MinIOCredentials" + }, + { + "$ref": "#/definitions/AwsCredentials" + } + ], + "description": "A block containing your credentials to AWS or MinIO.", + "title": "Credentials" + }, + "bucket_folder": { + "default": "", + "description": "A default path to a folder within the S3 bucket to use for reading and writing objects.", + "title": "Bucket Folder", + "type": "string" + } + }, + "required": [ + "bucket_name" + ], + "secret_fields": [ + "credentials.minio_root_password", + "credentials.aws_secret_access_key" + ], + "title": "S3Bucket", + "type": "object", + "definitions": { + "AwsClientParameters": { + "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", + "properties": { + "api_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The API version to use.", + "title": "API Version" + }, + "use_ssl": { + "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", + "type": "boolean" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" + }, + "verify_cert_path": { + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the CA cert bundle to use.", + "title": "Certificate Authority Bundle File Path" + }, + "endpoint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The complete URL to use for the constructed client.", + "title": "Endpoint URL" + }, + "config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" + } + }, + "title": "AwsClientParameters", + "type": "object" + }, + "AwsCredentials": { + "block_schema_references": {}, + "block_type_slug": "aws-credentials", + "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", + "properties": { + "aws_access_key_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS access key ID.", + "title": "AWS Access Key ID" + }, + "aws_secret_access_key": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS secret access key.", + "title": "AWS Access Key Secret" + }, + "aws_session_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", + "title": "AWS Session Token" + }, + "profile_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The profile to use when creating your session.", + "title": "Profile Name" + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client.", + "title": "AWS Client Parameters" + } + }, + "secret_fields": [ + "aws_secret_access_key" + ], + "title": "AwsCredentials", + "type": "object" + }, + "MinIOCredentials": { + "block_schema_references": {}, + "block_type_slug": "minio-credentials", + "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations.", + "properties": { + "minio_root_user": { + "description": "Admin or root user.", + "title": "Minio Root User", + "type": "string" + }, + "minio_root_password": { + "description": "Admin or root password.", + "format": "password", + "title": "Minio Root Password", + "type": "string", + "writeOnly": true + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client." + } + }, + "required": [ + "minio_root_user", + "minio_root_password" + ], + "secret_fields": [ + "minio_root_password" + ], + "title": "MinIOCredentials", + "type": "object" + } + } + }, + "capabilities": [ + "get-directory", + "put-directory", + "read-path", + "write-path" + ], + "version": "0.6.0" + } + } + } + } +} \ No newline at end of file From 357b9cbeee8d4025755a34ac385ade765fd914b3 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:34 -0500 Subject: [PATCH 33/42] Update aggregate block metadata with `prefect-aws` `v0.6.0` --- views/aggregate-block-metadata.json | 1229 ++++++++++++++------------- 1 file changed, 638 insertions(+), 591 deletions(-) diff --git a/views/aggregate-block-metadata.json b/views/aggregate-block-metadata.json index 0820373f5..333b2aeb6 100644 --- a/views/aggregate-block-metadata.json +++ b/views/aggregate-block-metadata.json @@ -1260,133 +1260,210 @@ "name": "AWS Credentials", "slug": "aws-credentials", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", - "documentation_url": "https://prefecthq.github.io/prefect-aws/credentials/#prefect_aws.credentials.AwsCredentials", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", "code_example": "Load stored AWS credentials:\n```python\nfrom prefect_aws import AwsCredentials\n\naws_credentials_block = AwsCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:17b73297ed60f080fb235b3a5a145a6d9b28a09b3ff2d9d17810b5e2c2075ebe", + "checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", "fields": { - "title": "AwsCredentials", + "block_schema_references": {}, + "block_type_slug": "aws-credentials", "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", - "type": "object", "properties": { "aws_access_key_id": { - "title": "AWS Access Key ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS access key ID.", - "type": "string" + "title": "AWS Access Key ID" }, "aws_secret_access_key": { - "title": "AWS Access Key Secret", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS secret access key.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "AWS Access Key Secret" }, "aws_session_token": { - "title": "AWS Session Token", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", - "type": "string" + "title": "AWS Session Token" }, "profile_name": { - "title": "Profile Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The profile to use when creating your session.", - "type": "string" + "title": "Profile Name" }, "region_name": { - "title": "Region Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The AWS Region where you want to create new connections.", - "type": "string" + "title": "Region Name" }, "aws_client_parameters": { - "title": "AWS Client Parameters", + "$ref": "#/definitions/AwsClientParameters", "description": "Extra parameters to initialize the Client.", - "allOf": [ - { - "$ref": "#/definitions/AwsClientParameters" - } - ] + "title": "AWS Client Parameters" } }, - "block_type_slug": "aws-credentials", "secret_fields": [ "aws_secret_access_key" ], - "block_schema_references": {}, + "title": "AwsCredentials", + "type": "object", "definitions": { "AwsClientParameters": { - "title": "AwsClientParameters", "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", "properties": { "api_version": { - "title": "API Version", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The API version to use.", - "type": "string" + "title": "API Version" }, "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", "type": "boolean" }, "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { "type": "boolean" }, { - "type": "string", - "format": "file-path" + "format": "file-path", + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" }, "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" + "title": "Certificate Authority Bundle File Path" }, "endpoint_url": { - "title": "Endpoint URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The complete URL to use for the constructed client.", - "type": "string" + "title": "Endpoint URL" }, "config": { - "title": "Botocore Config", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "Advanced configuration for Botocore clients.", - "type": "object" + "title": "Botocore Config" } - } + }, + "title": "AwsClientParameters", + "type": "object" } } }, "capabilities": [], - "version": "0.4.14" + "version": "0.6.0" } }, "aws-secret": { "name": "AWS Secret", "slug": "aws-secret", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", - "documentation_url": "https://prefecthq.github.io/prefect-aws/secrets_manager/#prefect_aws.secrets_manager.AwsSecret", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", "description": "Manages a secret in AWS's Secrets Manager. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", "code_example": "```python\nfrom prefect_aws.secrets_manager import AwsSecret\n\naws_secret_block = AwsSecret.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:d10fde5ac25b10edca4859c4d0bf61b4a9106215cd79ab80997f29859b190b7d", + "checksum": "sha256:67f9d5acd8682089c12173e957d29944c6752df7d680cdc9a08095befe9204ba", "fields": { - "title": "AwsSecret", + "block_schema_references": { + "aws_credentials": { + "block_schema_checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "block_type_slug": "aws-credentials" + } + }, + "block_type_slug": "aws-secret", "description": "Manages a secret in AWS's Secrets Manager.", - "type": "object", "properties": { "aws_credentials": { "$ref": "#/definitions/AwsCredentials" }, "secret_name": { - "title": "Secret Name", "description": "The name of the secret.", + "title": "Secret Name", "type": "string" } }, @@ -1394,683 +1471,587 @@ "aws_credentials", "secret_name" ], - "block_type_slug": "aws-secret", "secret_fields": [ "aws_credentials.aws_secret_access_key" ], - "block_schema_references": { - "aws_credentials": { - "block_type_slug": "aws-credentials", - "block_schema_checksum": "sha256:17b73297ed60f080fb235b3a5a145a6d9b28a09b3ff2d9d17810b5e2c2075ebe" - } - }, + "title": "AwsSecret", + "type": "object", "definitions": { "AwsClientParameters": { - "title": "AwsClientParameters", "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", "properties": { "api_version": { - "title": "API Version", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The API version to use.", - "type": "string" + "title": "API Version" }, "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", "type": "boolean" }, "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { "type": "boolean" }, { - "type": "string", - "format": "file-path" + "format": "file-path", + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" }, "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" + "title": "Certificate Authority Bundle File Path" }, "endpoint_url": { - "title": "Endpoint URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The complete URL to use for the constructed client.", - "type": "string" + "title": "Endpoint URL" }, "config": { - "title": "Botocore Config", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "Advanced configuration for Botocore clients.", - "type": "object" + "title": "Botocore Config" } - } + }, + "title": "AwsClientParameters", + "type": "object" }, "AwsCredentials": { - "title": "AwsCredentials", + "block_schema_references": {}, + "block_type_slug": "aws-credentials", "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", - "type": "object", "properties": { "aws_access_key_id": { - "title": "AWS Access Key ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS access key ID.", - "type": "string" + "title": "AWS Access Key ID" }, "aws_secret_access_key": { - "title": "AWS Access Key Secret", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS secret access key.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "AWS Access Key Secret" }, "aws_session_token": { - "title": "AWS Session Token", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", - "type": "string" + "title": "AWS Session Token" }, "profile_name": { - "title": "Profile Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The profile to use when creating your session.", - "type": "string" + "title": "Profile Name" }, "region_name": { - "title": "Region Name", - "description": "The AWS Region where you want to create new connections.", - "type": "string" - }, - "aws_client_parameters": { - "title": "AWS Client Parameters", - "description": "Extra parameters to initialize the Client.", - "allOf": [ - { - "$ref": "#/definitions/AwsClientParameters" - } - ] - } - }, - "block_type_slug": "aws-credentials", - "secret_fields": [ - "aws_secret_access_key" - ], - "block_schema_references": {} - } - } - }, - "capabilities": [], - "version": "0.4.14" - } - }, - "ecs-task": { - "name": "ECS Task", - "slug": "ecs-task", - "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", - "documentation_url": "https://prefecthq.github.io/prefect-aws/ecs/#prefect_aws.ecs.ECSTask", - "description": "DEPRECATION WARNING: This block is deprecated along with Agents and all other Infrastructure blocks. It will be removed in `prefect>=3.0.0`. Run a command as an ECS task. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", - "code_example": "```python\nfrom prefect_aws.ecs import ECSTask\n\necs_task_block = ECSTask.load(\"BLOCK_NAME\")\n```", - "block_schema": { - "checksum": "sha256:d72b495859da39536d3e1119ddabd42a10866867b97c4834956ae231120858ca", - "fields": { - "title": "ECSTask", - "description": "Run a command as an ECS task.", - "type": "object", - "properties": { - "type": { - "title": "Type", - "description": "The slug for this task type.", - "default": "ecs-task", - "enum": [ - "ecs-task" - ], - "type": "string" - }, - "env": { - "title": "Environment Variables", - "description": "Environment variables to provide to the task run. These variables are set on the Prefect container at task runtime. These will not be set on the task definition.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "title": "Labels", - "description": "Labels applied to the infrastructure for metadata purposes.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "title": "Name", - "description": "Name applied to the infrastructure for identification.", - "type": "string" - }, - "command": { - "title": "Command", - "description": "The command to run in the infrastructure.", - "type": "array", - "items": { - "type": "string" - } - }, - "aws_credentials": { - "title": "AWS Credentials", - "description": "The AWS credentials to use to connect to ECS.", - "allOf": [ - { - "$ref": "#/definitions/AwsCredentials" - } - ] - }, - "task_definition_arn": { - "title": "Task Definition Arn", - "description": "An identifier for an existing task definition to use. If fields are set on the `ECSTask` that conflict with the task definition, a new copy will be registered with the required values. Cannot be used with `task_definition`. If not provided, Prefect will generate and register a minimal task definition.", - "type": "string" - }, - "task_definition": { - "title": "Task Definition", - "description": "An ECS task definition to use. Prefect may set defaults or override fields on this task definition to match other `ECSTask` fields. Cannot be used with `task_definition_arn`. If not provided, Prefect will generate and register a minimal task definition.", - "type": "object" - }, - "family": { - "title": "Family", - "description": "A family for the task definition. If not provided, it will be inferred from the task definition. If the task definition does not have a family, the name will be generated. When flow and deployment metadata is available, the generated name will include their names. Values for this field will be slugified to match AWS character requirements.", - "type": "string" - }, - "image": { - "title": "Image", - "description": "The image to use for the Prefect container in the task. If this value is not null, it will override the value in the task definition. This value defaults to a Prefect base image matching your local versions.", - "type": "string" - }, - "auto_deregister_task_definition": { - "title": "Auto Deregister Task Definition", - "description": "If set, any task definitions that are created by this block will be deregistered. Existing task definitions linked by ARN will never be deregistered. Deregistering a task definition does not remove it from your AWS account, instead it will be marked as INACTIVE.", - "default": true, - "type": "boolean" - }, - "cpu": { - "title": "CPU", - "description": "The amount of CPU to provide to the ECS task. Valid amounts are specified in the AWS documentation. If not provided, a default value of 1024 will be used unless present on the task definition.", - "type": "integer" - }, - "memory": { - "title": "Memory", - "description": "The amount of memory to provide to the ECS task. Valid amounts are specified in the AWS documentation. If not provided, a default value of 2048 will be used unless present on the task definition.", - "type": "integer" - }, - "execution_role_arn": { - "title": "Execution Role ARN", - "description": "An execution role to use for the task. This controls the permissions of the task when it is launching. If this value is not null, it will override the value in the task definition. An execution role must be provided to capture logs from the container.", - "type": "string" - }, - "configure_cloudwatch_logs": { - "title": "Configure Cloudwatch Logs", - "description": "If `True`, the Prefect container will be configured to send its output to the AWS CloudWatch logs service. This functionality requires an execution role with logs:CreateLogStream, logs:CreateLogGroup, and logs:PutLogEvents permissions. The default for this field is `False` unless `stream_output` is set.", - "type": "boolean" - }, - "cloudwatch_logs_options": { - "title": "Cloudwatch Logs Options", - "description": "When `configure_cloudwatch_logs` is enabled, this setting may be used to pass additional options to the CloudWatch logs configuration or override the default options. See the AWS documentation for available options. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html#create_awslogs_logdriver_options.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "stream_output": { - "title": "Stream Output", - "description": "If `True`, logs will be streamed from the Prefect container to the local console. Unless you have configured AWS CloudWatch logs manually on your task definition, this requires the same prerequisites outlined in `configure_cloudwatch_logs`.", - "type": "boolean" - }, - "launch_type": { - "title": "Launch Type", - "description": "The type of ECS task run infrastructure that should be used. Note that 'FARGATE_SPOT' is not a formal ECS launch type, but we will configure the proper capacity provider strategy if set here.", - "default": "FARGATE", - "enum": [ - "FARGATE", - "EC2", - "EXTERNAL", - "FARGATE_SPOT" - ], - "type": "string" - }, - "vpc_id": { - "title": "VPC ID", - "description": "The AWS VPC to link the task run to. This is only applicable when using the 'awsvpc' network mode for your task. FARGATE tasks require this network mode, but for EC2 tasks the default network mode is 'bridge'. If using the 'awsvpc' network mode and this field is null, your default VPC will be used. If no default VPC can be found, the task run will fail.", - "type": "string" - }, - "cluster": { - "title": "Cluster", - "description": "The ECS cluster to run the task in. The ARN or name may be provided. If not provided, the default cluster will be used.", - "type": "string" - }, - "task_role_arn": { - "title": "Task Role ARN", - "description": "A role to attach to the task run. This controls the permissions of the task while it is running.", - "type": "string" - }, - "task_customizations": { - "title": "Task Customizations", - "description": "A list of JSON 6902 patches to apply to the task run request. If a string is given, it will parsed as a JSON expression.", - "type": "array", - "format": "rfc6902", - "items": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "task_start_timeout_seconds": { - "title": "Task Start Timeout Seconds", - "description": "The amount of time to watch for the start of the ECS task before marking it as failed. The task must enter a RUNNING state to be considered started.", - "default": 120, - "type": "integer" - }, - "task_watch_poll_interval": { - "title": "Task Watch Poll Interval", - "description": "The amount of time to wait between AWS API calls while monitoring the state of an ECS task.", - "default": 5.0, - "type": "number" - } - }, - "block_type_slug": "ecs-task", - "secret_fields": [ - "aws_credentials.aws_secret_access_key" - ], - "block_schema_references": { - "aws_credentials": { - "block_type_slug": "aws-credentials", - "block_schema_checksum": "sha256:17b73297ed60f080fb235b3a5a145a6d9b28a09b3ff2d9d17810b5e2c2075ebe" - } - }, - "definitions": { - "AwsClientParameters": { - "title": "AwsClientParameters", - "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", - "properties": { - "api_version": { - "title": "API Version", - "description": "The API version to use.", - "type": "string" - }, - "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", - "default": true, - "type": "boolean" - }, - "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { - "type": "boolean" + "type": "string" }, { - "type": "string", - "format": "file-path" + "type": "null" } - ] - }, - "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", - "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" - }, - "endpoint_url": { - "title": "Endpoint URL", - "description": "The complete URL to use for the constructed client.", - "type": "string" - }, - "config": { - "title": "Botocore Config", - "description": "Advanced configuration for Botocore clients.", - "type": "object" - } - } - }, - "AwsCredentials": { - "title": "AwsCredentials", - "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", - "type": "object", - "properties": { - "aws_access_key_id": { - "title": "AWS Access Key ID", - "description": "A specific AWS access key ID.", - "type": "string" - }, - "aws_secret_access_key": { - "title": "AWS Access Key Secret", - "description": "A specific AWS secret access key.", - "type": "string", - "writeOnly": true, - "format": "password" - }, - "aws_session_token": { - "title": "AWS Session Token", - "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", - "type": "string" - }, - "profile_name": { - "title": "Profile Name", - "description": "The profile to use when creating your session.", - "type": "string" - }, - "region_name": { - "title": "Region Name", + ], + "default": null, "description": "The AWS Region where you want to create new connections.", - "type": "string" + "title": "Region Name" }, "aws_client_parameters": { - "title": "AWS Client Parameters", + "$ref": "#/definitions/AwsClientParameters", "description": "Extra parameters to initialize the Client.", - "allOf": [ - { - "$ref": "#/definitions/AwsClientParameters" - } - ] + "title": "AWS Client Parameters" } }, - "block_type_slug": "aws-credentials", "secret_fields": [ "aws_secret_access_key" ], - "block_schema_references": {} + "title": "AwsCredentials", + "type": "object" } } }, - "capabilities": [ - "run-infrastructure" - ], - "version": "0.4.14" + "capabilities": [], + "version": "0.6.0" } }, "lambda-function": { "name": "Lambda Function", "slug": "lambda-function", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", - "documentation_url": "https://prefecthq.github.io/prefect-aws/s3/#prefect_aws.lambda_function.LambdaFunction", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", "description": "Invoke a Lambda function. This block is part of the prefect-aws\ncollection. Install prefect-aws with `pip install prefect-aws` to use this\nblock. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", "code_example": "```python\nfrom prefect_aws.lambda_function import LambdaFunction\n\nlambda_function_block = LambdaFunction.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:93fb424309b85c0ef9a8e69cc9d0df1e0afa0f2ed15f1ecc710ec3463513b2e4", + "checksum": "sha256:2d9454b88c75f20a9ffccb0505f12729761e21f5c0a8f429535ff6669aebcd0f", "fields": { - "title": "LambdaFunction", + "block_schema_references": { + "aws_credentials": { + "block_schema_checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "block_type_slug": "aws-credentials" + } + }, + "block_type_slug": "lambda-function", "description": "Invoke a Lambda function. This block is part of the prefect-aws\ncollection. Install prefect-aws with `pip install prefect-aws` to use this\nblock.", - "type": "object", "properties": { "function_name": { - "title": "Function Name", "description": "The name, ARN, or partial ARN of the Lambda function to run. This must be the name of a function that is already deployed to AWS Lambda.", + "title": "Function Name", "type": "string" }, "qualifier": { - "title": "Qualifier", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The version or alias of the Lambda function to use when invoked. If not specified, the latest (unqualified) version of the Lambda function will be used.", - "type": "string" + "title": "Qualifier" }, "aws_credentials": { - "title": "AWS Credentials", + "$ref": "#/definitions/AwsCredentials", "description": "The AWS credentials to invoke the Lambda with.", - "allOf": [ - { - "$ref": "#/definitions/AwsCredentials" - } - ] + "title": "AWS Credentials" } }, "required": [ "function_name" ], - "block_type_slug": "lambda-function", "secret_fields": [ "aws_credentials.aws_secret_access_key" ], - "block_schema_references": { - "aws_credentials": { - "block_type_slug": "aws-credentials", - "block_schema_checksum": "sha256:17b73297ed60f080fb235b3a5a145a6d9b28a09b3ff2d9d17810b5e2c2075ebe" - } - }, + "title": "LambdaFunction", + "type": "object", "definitions": { "AwsClientParameters": { - "title": "AwsClientParameters", "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", "properties": { "api_version": { - "title": "API Version", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The API version to use.", - "type": "string" + "title": "API Version" }, "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", "type": "boolean" }, "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { "type": "boolean" }, { - "type": "string", - "format": "file-path" + "format": "file-path", + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" }, "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" + "title": "Certificate Authority Bundle File Path" }, "endpoint_url": { - "title": "Endpoint URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The complete URL to use for the constructed client.", - "type": "string" + "title": "Endpoint URL" }, "config": { - "title": "Botocore Config", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "Advanced configuration for Botocore clients.", - "type": "object" + "title": "Botocore Config" } - } + }, + "title": "AwsClientParameters", + "type": "object" }, "AwsCredentials": { - "title": "AwsCredentials", + "block_schema_references": {}, + "block_type_slug": "aws-credentials", "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", - "type": "object", "properties": { "aws_access_key_id": { - "title": "AWS Access Key ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS access key ID.", - "type": "string" + "title": "AWS Access Key ID" }, "aws_secret_access_key": { - "title": "AWS Access Key Secret", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS secret access key.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "AWS Access Key Secret" }, "aws_session_token": { - "title": "AWS Session Token", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", - "type": "string" + "title": "AWS Session Token" }, "profile_name": { - "title": "Profile Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The profile to use when creating your session.", - "type": "string" + "title": "Profile Name" }, "region_name": { - "title": "Region Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The AWS Region where you want to create new connections.", - "type": "string" + "title": "Region Name" }, "aws_client_parameters": { - "title": "AWS Client Parameters", + "$ref": "#/definitions/AwsClientParameters", "description": "Extra parameters to initialize the Client.", - "allOf": [ - { - "$ref": "#/definitions/AwsClientParameters" - } - ] + "title": "AWS Client Parameters" } }, - "block_type_slug": "aws-credentials", "secret_fields": [ "aws_secret_access_key" ], - "block_schema_references": {} + "title": "AwsCredentials", + "type": "object" } } }, "capabilities": [], - "version": "0.4.14" + "version": "0.6.0" } }, "minio-credentials": { "name": "MinIO Credentials", "slug": "minio-credentials", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/676cb17bcbdff601f97e0a02ff8bcb480e91ff40-250x250.png", - "documentation_url": "https://prefecthq.github.io/prefect-aws/credentials/#prefect_aws.credentials.MinIOCredentials", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", "code_example": "Load stored MinIO credentials:\n```python\nfrom prefect_aws import MinIOCredentials\n\nminio_credentials_block = MinIOCredentials.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:5b4f1e5270f3a3670ff3d06b7e6e8246d54dacba976321dec42abe51c33415fb", + "checksum": "sha256:c21bd87a12b6f17e5d40fbdd56f087e1636b3724bb60cb61d0b8c6bb5075609f", "fields": { - "title": "MinIOCredentials", + "block_schema_references": {}, + "block_type_slug": "minio-credentials", "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations.", - "type": "object", "properties": { "minio_root_user": { - "title": "Minio Root User", "description": "Admin or root user.", + "title": "Minio Root User", "type": "string" }, "minio_root_password": { - "title": "Minio Root Password", "description": "Admin or root password.", + "format": "password", + "title": "Minio Root Password", "type": "string", - "writeOnly": true, - "format": "password" + "writeOnly": true }, "region_name": { - "title": "Region Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The AWS Region where you want to create new connections.", - "type": "string" + "title": "Region Name" }, "aws_client_parameters": { - "title": "Aws Client Parameters", - "description": "Extra parameters to initialize the Client.", - "allOf": [ - { - "$ref": "#/definitions/AwsClientParameters" - } - ] + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client." } }, "required": [ "minio_root_user", "minio_root_password" ], - "block_type_slug": "minio-credentials", "secret_fields": [ "minio_root_password" ], - "block_schema_references": {}, + "title": "MinIOCredentials", + "type": "object", "definitions": { "AwsClientParameters": { - "title": "AwsClientParameters", "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", "properties": { "api_version": { - "title": "API Version", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The API version to use.", - "type": "string" + "title": "API Version" }, "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", "type": "boolean" }, "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { "type": "boolean" }, { - "type": "string", - "format": "file-path" + "format": "file-path", + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" }, "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" + "title": "Certificate Authority Bundle File Path" }, "endpoint_url": { - "title": "Endpoint URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The complete URL to use for the constructed client.", - "type": "string" + "title": "Endpoint URL" }, "config": { - "title": "Botocore Config", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "Advanced configuration for Botocore clients.", - "type": "object" + "title": "Botocore Config" } - } + }, + "title": "AwsClientParameters", + "type": "object" } } }, "capabilities": [], - "version": "0.4.14" + "version": "0.6.0" } }, "s3-bucket": { "name": "S3 Bucket", "slug": "s3-bucket", "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", - "documentation_url": "https://prefecthq.github.io/prefect-aws/s3/#prefect_aws.s3.S3Bucket", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws", "description": "Block used to store data using AWS S3 or S3-compatible object storage like MinIO. This block is part of the prefect-aws collection. Install prefect-aws with `pip install prefect-aws` to use this block.", "code_example": "```python\nfrom prefect_aws.s3 import S3Bucket\n\ns3_bucket_block = S3Bucket.load(\"BLOCK_NAME\")\n```", "block_schema": { - "checksum": "sha256:da1e638612365b12ec83b6102986cc5efe54e84b7144bd668629f6972afe748f", + "checksum": "sha256:b374eb01ebd176b97b02a6529b60c215d20eb003c1f9d1de8cdc5e4ae641cd14", "fields": { - "title": "S3Bucket", + "block_schema_references": { + "credentials": [ + { + "block_schema_checksum": "sha256:c21bd87a12b6f17e5d40fbdd56f087e1636b3724bb60cb61d0b8c6bb5075609f", + "block_type_slug": "minio-credentials" + }, + { + "block_schema_checksum": "sha256:79d2e4d682d389f4823d2e1b2b206b2efe905d0ddd8d05ef2b1b3384b6ae0609", + "block_type_slug": "aws-credentials" + } + ] + }, + "block_type_slug": "s3-bucket", "description": "Block used to store data using AWS S3 or S3-compatible object storage like MinIO.", - "type": "object", "properties": { "bucket_name": { - "title": "Bucket Name", "description": "Name of your bucket.", + "title": "Bucket Name", "type": "string" }, "credentials": { - "title": "Credentials", - "description": "A block containing your credentials to AWS or MinIO.", "anyOf": [ { "$ref": "#/definitions/MinIOCredentials" @@ -2078,173 +2059,239 @@ { "$ref": "#/definitions/AwsCredentials" } - ] + ], + "description": "A block containing your credentials to AWS or MinIO.", + "title": "Credentials" }, "bucket_folder": { - "title": "Bucket Folder", - "description": "A default path to a folder within the S3 bucket to use for reading and writing objects.", "default": "", + "description": "A default path to a folder within the S3 bucket to use for reading and writing objects.", + "title": "Bucket Folder", "type": "string" } }, "required": [ "bucket_name" ], - "block_type_slug": "s3-bucket", "secret_fields": [ "credentials.minio_root_password", "credentials.aws_secret_access_key" ], - "block_schema_references": { - "credentials": [ - { - "block_type_slug": "minio-credentials", - "block_schema_checksum": "sha256:5b4f1e5270f3a3670ff3d06b7e6e8246d54dacba976321dec42abe51c33415fb" - }, - { - "block_type_slug": "aws-credentials", - "block_schema_checksum": "sha256:17b73297ed60f080fb235b3a5a145a6d9b28a09b3ff2d9d17810b5e2c2075ebe" - } - ] - }, + "title": "S3Bucket", + "type": "object", "definitions": { "AwsClientParameters": { - "title": "AwsClientParameters", "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", "properties": { "api_version": { - "title": "API Version", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The API version to use.", - "type": "string" + "title": "API Version" }, "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", "type": "boolean" }, "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { "type": "boolean" }, { - "type": "string", - "format": "file-path" + "format": "file-path", + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" }, "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" + "title": "Certificate Authority Bundle File Path" }, "endpoint_url": { - "title": "Endpoint URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The complete URL to use for the constructed client.", - "type": "string" + "title": "Endpoint URL" }, "config": { - "title": "Botocore Config", - "description": "Advanced configuration for Botocore clients.", - "type": "object" - } - } - }, - "MinIOCredentials": { - "title": "MinIOCredentials", - "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations.", - "type": "object", - "properties": { - "minio_root_user": { - "title": "Minio Root User", - "description": "Admin or root user.", - "type": "string" - }, - "minio_root_password": { - "title": "Minio Root Password", - "description": "Admin or root password.", - "type": "string", - "writeOnly": true, - "format": "password" - }, - "region_name": { - "title": "Region Name", - "description": "The AWS Region where you want to create new connections.", - "type": "string" - }, - "aws_client_parameters": { - "title": "Aws Client Parameters", - "description": "Extra parameters to initialize the Client.", - "allOf": [ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, { - "$ref": "#/definitions/AwsClientParameters" + "type": "null" } - ] + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" } }, - "required": [ - "minio_root_user", - "minio_root_password" - ], - "block_type_slug": "minio-credentials", - "secret_fields": [ - "minio_root_password" - ], - "block_schema_references": {} + "title": "AwsClientParameters", + "type": "object" }, "AwsCredentials": { - "title": "AwsCredentials", + "block_schema_references": {}, + "block_type_slug": "aws-credentials", "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", - "type": "object", "properties": { "aws_access_key_id": { - "title": "AWS Access Key ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS access key ID.", - "type": "string" + "title": "AWS Access Key ID" }, "aws_secret_access_key": { - "title": "AWS Access Key Secret", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS secret access key.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "AWS Access Key Secret" }, "aws_session_token": { - "title": "AWS Session Token", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", - "type": "string" + "title": "AWS Session Token" }, "profile_name": { - "title": "Profile Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The profile to use when creating your session.", - "type": "string" + "title": "Profile Name" }, "region_name": { - "title": "Region Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The AWS Region where you want to create new connections.", - "type": "string" + "title": "Region Name" }, "aws_client_parameters": { - "title": "AWS Client Parameters", + "$ref": "#/definitions/AwsClientParameters", "description": "Extra parameters to initialize the Client.", - "allOf": [ + "title": "AWS Client Parameters" + } + }, + "secret_fields": [ + "aws_secret_access_key" + ], + "title": "AwsCredentials", + "type": "object" + }, + "MinIOCredentials": { + "block_schema_references": {}, + "block_type_slug": "minio-credentials", + "description": "Block used to manage authentication with MinIO. Refer to the MinIO docs: https://docs.min.io/docs/minio-server-configuration-guide.html for more info about the possible credential configurations.", + "properties": { + "minio_root_user": { + "description": "Admin or root user.", + "title": "Minio Root User", + "type": "string" + }, + "minio_root_password": { + "description": "Admin or root password.", + "format": "password", + "title": "Minio Root Password", + "type": "string", + "writeOnly": true + }, + "region_name": { + "anyOf": [ { - "$ref": "#/definitions/AwsClientParameters" + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client." } }, - "block_type_slug": "aws-credentials", + "required": [ + "minio_root_user", + "minio_root_password" + ], "secret_fields": [ - "aws_secret_access_key" + "minio_root_password" ], - "block_schema_references": {} + "title": "MinIOCredentials", + "type": "object" } } }, @@ -2254,7 +2301,7 @@ "read-path", "write-path" ], - "version": "0.4.14" + "version": "0.6.0" } } } From 2a0b9808f0f17469e1410dc6b5002371d0c0eca8 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:35 -0500 Subject: [PATCH 34/42] Add `prefect-aws` `v0.6.0` to worker records --- collections/prefect-aws/workers/v0.6.0.json | 552 ++++++++++++++++++++ 1 file changed, 552 insertions(+) create mode 100644 collections/prefect-aws/workers/v0.6.0.json diff --git a/collections/prefect-aws/workers/v0.6.0.json b/collections/prefect-aws/workers/v0.6.0.json new file mode 100644 index 000000000..29a9e70c4 --- /dev/null +++ b/collections/prefect-aws/workers/v0.6.0.json @@ -0,0 +1,552 @@ +{ + "prefect-aws": { + "ecs": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "aws_credentials": "{{ aws_credentials }}", + "task_definition": { + "containerDefinitions": [ + { + "image": "{{ image }}", + "name": "{{ container_name }}" + } + ], + "cpu": "{{ cpu }}", + "executionRoleArn": "{{ execution_role_arn }}", + "family": "{{ family }}", + "memory": "{{ memory }}" + }, + "task_run_request": { + "capacityProviderStrategy": "{{ capacity_provider_strategy }}", + "cluster": "{{ cluster }}", + "launchType": "{{ launch_type }}", + "overrides": { + "containerOverrides": [ + { + "command": "{{ command }}", + "cpu": "{{ cpu }}", + "environment": "{{ env }}", + "memory": "{{ memory }}", + "name": "{{ container_name }}" + } + ], + "cpu": "{{ cpu }}", + "memory": "{{ memory }}", + "taskRoleArn": "{{ task_role_arn }}" + }, + "tags": "{{ labels }}", + "taskDefinition": "{{ task_definition_arn }}" + }, + "configure_cloudwatch_logs": "{{ configure_cloudwatch_logs }}", + "cloudwatch_logs_options": "{{ cloudwatch_logs_options }}", + "cloudwatch_logs_prefix": "{{ cloudwatch_logs_prefix }}", + "network_configuration": "{{ network_configuration }}", + "stream_output": false, + "task_start_timeout_seconds": 0, + "task_watch_poll_interval": 0, + "auto_deregister_task_definition": "{{ auto_deregister_task_definition }}", + "vpc_id": "{{ vpc_id }}", + "container_name": "{{ container_name }}", + "cluster": "{{ cluster }}", + "match_latest_revision_in_family": "{{ match_latest_revision_in_family }}", + "prefect_api_key_secret_arn": "{{ prefect_api_key_secret_arn }}", + "prefect_api_auth_string_secret_arn": "{{ prefect_api_auth_string_secret_arn }}", + "execution_role_arn": "{{ execution_role_arn }}" + }, + "variables": { + "description": "Variables for templating an ECS job.", + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to provide to the task run. These variables are set on the Prefect container at task runtime. These will not be set on the task definition.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "task_definition_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An identifier for an existing task definition to use. If set, options that require changes to the task definition will be ignored. All contents of the task definition in the job configuration will be ignored.", + "title": "Task Definition ARN" + }, + "aws_credentials": { + "$ref": "#/definitions/AwsCredentials", + "description": "The AWS credentials to use to connect to ECS. If not provided, credentials will be inferred from the local environment following AWS's boto client's rules.", + "title": "AWS Credentials" + }, + "cluster": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The ECS cluster to run the task in. An ARN or name may be provided. If not provided, the default cluster will be used.", + "title": "Cluster" + }, + "family": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A family for the task definition. If not provided, it will be inferred from the task definition. If the task definition does not have a family, the name will be generated. When flow and deployment metadata is available, the generated name will include their names. Values for this field will be slugified to match AWS character requirements.", + "title": "Family" + }, + "launch_type": { + "default": "FARGATE", + "description": "The type of ECS task run infrastructure that should be used. Note that 'FARGATE_SPOT' is not a formal ECS launch type, but we will configure the proper capacity provider strategy if set here.", + "enum": [ + "FARGATE", + "EC2", + "EXTERNAL", + "FARGATE_SPOT" + ], + "title": "Launch Type", + "type": "string" + }, + "capacity_provider_strategy": { + "description": "The capacity provider strategy to use when running the task. If a capacity provider strategy is specified, the selected launch type will be ignored.", + "items": { + "$ref": "#/definitions/CapacityProvider" + }, + "title": "Capacity Provider Strategy", + "type": "array" + }, + "image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image to use for the Prefect container in the task. If this value is not null, it will override the value in the task definition. This value defaults to a Prefect base image matching your local versions.", + "title": "Image" + }, + "cpu": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The amount of CPU to provide to the ECS task. Valid amounts are specified in the AWS documentation. If not provided, a default value of 1024 will be used unless present on the task definition.", + "title": "CPU" + }, + "memory": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The amount of memory to provide to the ECS task. Valid amounts are specified in the AWS documentation. If not provided, a default value of 2048 will be used unless present on the task definition.", + "title": "Memory" + }, + "container_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the container flow run orchestration will occur in. If not specified, a default value of prefect will be used and if that is not found in the task definition the first container will be used.", + "title": "Container Name" + }, + "prefect_api_key_secret_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An ARN of an AWS secret containing a Prefect API key. This key will be used to authenticate ECS tasks with Prefect Cloud. If not provided, the PREFECT_API_KEY environment variable will be used if the worker has one.", + "title": "Prefect API Key Secret ARN" + }, + "prefect_api_auth_string_secret_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An ARN of an AWS secret containing a Prefect API auth string. This string will be used to authenticate ECS tasks with Prefect Cloud. If not provided, the PREFECT_API_AUTH_STRING environment variable will be used if the worker has one.", + "title": "Prefect API Auth String Secret ARN" + }, + "task_role_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A role to attach to the task run. This controls the permissions of the task while it is running.", + "title": "Task Role ARN" + }, + "execution_role_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An execution role to use for the task. This controls the permissions of the task when it is launching. If this value is not null, it will override the value in the task definition. An execution role must be provided to capture logs from the container.", + "title": "Execution Role ARN" + }, + "vpc_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS VPC to link the task run to. This is only applicable when using the 'awsvpc' network mode for your task. FARGATE tasks require this network mode, but for EC2 tasks the default network mode is 'bridge'. If using the 'awsvpc' network mode and this field is null, your default VPC will be used. If no default VPC can be found, the task run will fail.", + "title": "VPC ID" + }, + "configure_cloudwatch_logs": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "If enabled, the Prefect container will be configured to send its output to the AWS CloudWatch logs service. This functionality requires an execution role with logs:CreateLogStream, logs:CreateLogGroup, and logs:PutLogEvents permissions. The default for this field is `False`.", + "title": "Configure Cloudwatch Logs" + }, + "cloudwatch_logs_options": { + "additionalProperties": { + "type": "string" + }, + "description": "When `configure_cloudwatch_logs` is enabled, this setting may be used to pass additional options to the CloudWatch logs configuration or override the default options. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html#create_awslogs_logdriver_options) for available options. ", + "title": "Cloudwatch Logs Options", + "type": "object" + }, + "cloudwatch_logs_prefix": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "When `configure_cloudwatch_logs` is enabled, this setting may be used to set a prefix for the log group. If not provided, the default prefix will be `prefect-logs__`. If `awslogs-stream-prefix` is present in `Cloudwatch logs options` this setting will be ignored.", + "title": "Cloudwatch Logs Prefix" + }, + "network_configuration": { + "additionalProperties": true, + "description": "When `network_configuration` is supplied it will override ECS Worker'sawsvpcConfiguration that defined in the ECS task executing your workload. See the [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-awsvpcconfiguration.html) for available options.", + "title": "Network Configuration", + "type": "object" + }, + "auto_deregister_task_definition": { + "default": false, + "description": "If enabled, any task definitions that are created by this block will be deregistered. Existing task definitions linked by ARN will never be deregistered. Deregistering a task definition does not remove it from your AWS account, instead it will be marked as INACTIVE.", + "title": "Auto Deregister Task Definition", + "type": "boolean" + }, + "match_latest_revision_in_family": { + "default": false, + "description": "If enabled, the most recent active revision in the task definition family will be compared against the desired ECS task configuration. If they are equal, the existing task definition will be used instead of registering a new one. If no family is specified the default family \"prefect\" will be used.", + "title": "Match Latest Revision In Family", + "type": "boolean" + } + }, + "type": "object", + "definitions": { + "AwsClientParameters": { + "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", + "properties": { + "api_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The API version to use.", + "title": "API Version" + }, + "use_ssl": { + "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", + "type": "boolean" + }, + "verify": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" + }, + "verify_cert_path": { + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the CA cert bundle to use.", + "title": "Certificate Authority Bundle File Path" + }, + "endpoint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The complete URL to use for the constructed client.", + "title": "Endpoint URL" + }, + "config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Advanced configuration for Botocore clients.", + "title": "Botocore Config" + } + }, + "title": "AwsClientParameters", + "type": "object" + }, + "AwsCredentials": { + "block_schema_references": {}, + "block_type_slug": "aws-credentials", + "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", + "properties": { + "aws_access_key_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS access key ID.", + "title": "AWS Access Key ID" + }, + "aws_secret_access_key": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific AWS secret access key.", + "title": "AWS Access Key Secret" + }, + "aws_session_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", + "title": "AWS Session Token" + }, + "profile_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The profile to use when creating your session.", + "title": "Profile Name" + }, + "region_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The AWS Region where you want to create new connections.", + "title": "Region Name" + }, + "aws_client_parameters": { + "$ref": "#/definitions/AwsClientParameters", + "description": "Extra parameters to initialize the Client.", + "title": "AWS Client Parameters" + } + }, + "secret_fields": [ + "aws_secret_access_key" + ], + "title": "AwsCredentials", + "type": "object" + }, + "CapacityProvider": { + "description": "The capacity provider strategy to use when running the task.", + "properties": { + "capacityProvider": { + "title": "Capacityprovider", + "type": "string" + }, + "weight": { + "title": "Weight", + "type": "integer" + }, + "base": { + "title": "Base", + "type": "integer" + } + }, + "required": [ + "capacityProvider", + "weight", + "base" + ], + "title": "CapacityProvider", + "type": "object" + } + } + } + }, + "description": "Execute flow runs within containers on AWS ECS. Works with EC2 and Fargate clusters. Requires an AWS account.", + "display_name": "AWS Elastic Container Service", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws/", + "install_command": "pip install prefect-aws", + "is_beta": false, + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", + "type": "ecs" + } + } +} \ No newline at end of file From 9b72ab189de23998fdfedeb2a9e9d3e2055977e7 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:37 -0500 Subject: [PATCH 35/42] Update aggregate worker metadata with `prefect-aws` `v0.6.0` --- views/aggregate-worker-metadata.json | 468 +++++++++++++++++++-------- 1 file changed, 334 insertions(+), 134 deletions(-) diff --git a/views/aggregate-worker-metadata.json b/views/aggregate-worker-metadata.json index 76ca4ff2f..70a2869cb 100644 --- a/views/aggregate-worker-metadata.json +++ b/views/aggregate-worker-metadata.json @@ -120,21 +120,22 @@ } ], "cpu": "{{ cpu }}", + "executionRoleArn": "{{ execution_role_arn }}", "family": "{{ family }}", - "memory": "{{ memory }}", - "executionRoleArn": "{{ execution_role_arn }}" + "memory": "{{ memory }}" }, "task_run_request": { - "launchType": "{{ launch_type }}", + "capacityProviderStrategy": "{{ capacity_provider_strategy }}", "cluster": "{{ cluster }}", + "launchType": "{{ launch_type }}", "overrides": { "containerOverrides": [ { - "name": "{{ container_name }}", "command": "{{ command }}", - "environment": "{{ env }}", "cpu": "{{ cpu }}", - "memory": "{{ memory }}" + "environment": "{{ env }}", + "memory": "{{ memory }}", + "name": "{{ container_name }}" } ], "cpu": "{{ cpu }}", @@ -142,285 +143,482 @@ "taskRoleArn": "{{ task_role_arn }}" }, "tags": "{{ labels }}", - "taskDefinition": "{{ task_definition_arn }}", - "capacityProviderStrategy": "{{ capacity_provider_strategy }}" + "taskDefinition": "{{ task_definition_arn }}" }, "configure_cloudwatch_logs": "{{ configure_cloudwatch_logs }}", "cloudwatch_logs_options": "{{ cloudwatch_logs_options }}", "cloudwatch_logs_prefix": "{{ cloudwatch_logs_prefix }}", "network_configuration": "{{ network_configuration }}", - "stream_output": "{{ stream_output }}", - "task_start_timeout_seconds": "{{ task_start_timeout_seconds }}", - "task_watch_poll_interval": "{{ task_watch_poll_interval }}", + "stream_output": false, + "task_start_timeout_seconds": 0, + "task_watch_poll_interval": 0, "auto_deregister_task_definition": "{{ auto_deregister_task_definition }}", "vpc_id": "{{ vpc_id }}", "container_name": "{{ container_name }}", "cluster": "{{ cluster }}", - "match_latest_revision_in_family": "{{ match_latest_revision_in_family }}" + "match_latest_revision_in_family": "{{ match_latest_revision_in_family }}", + "prefect_api_key_secret_arn": "{{ prefect_api_key_secret_arn }}", + "prefect_api_auth_string_secret_arn": "{{ prefect_api_auth_string_secret_arn }}", + "execution_role_arn": "{{ execution_role_arn }}" }, "variables": { "description": "Variables for templating an ECS job.", - "type": "object", "properties": { "name": { - "title": "Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Name given to infrastructure created by a worker.", - "type": "string" + "title": "Name" }, "env": { - "title": "Environment Variables", - "description": "Environment variables to provide to the task run. These variables are set on the Prefect container at task runtime. These will not be set on the task definition.", - "type": "object", "additionalProperties": { - "type": "string" - } + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to provide to the task run. These variables are set on the Prefect container at task runtime. These will not be set on the task definition.", + "title": "Environment Variables", + "type": "object" }, "labels": { - "title": "Labels", - "description": "Labels applied to infrastructure created by a worker.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" }, "command": { - "title": "Command", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", - "type": "string" + "title": "Command" }, "task_definition_arn": { - "title": "Task Definition Arn", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "An identifier for an existing task definition to use. If set, options that require changes to the task definition will be ignored. All contents of the task definition in the job configuration will be ignored.", - "type": "string" + "title": "Task Definition ARN" }, "aws_credentials": { - "title": "AWS Credentials", + "$ref": "#/definitions/AwsCredentials", "description": "The AWS credentials to use to connect to ECS. If not provided, credentials will be inferred from the local environment following AWS's boto client's rules.", - "allOf": [ - { - "$ref": "#/definitions/AwsCredentials" - } - ] + "title": "AWS Credentials" }, "cluster": { - "title": "Cluster", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The ECS cluster to run the task in. An ARN or name may be provided. If not provided, the default cluster will be used.", - "type": "string" + "title": "Cluster" }, "family": { - "title": "Family", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A family for the task definition. If not provided, it will be inferred from the task definition. If the task definition does not have a family, the name will be generated. When flow and deployment metadata is available, the generated name will include their names. Values for this field will be slugified to match AWS character requirements.", - "type": "string" + "title": "Family" }, "launch_type": { - "title": "Launch Type", - "description": "The type of ECS task run infrastructure that should be used. Note that 'FARGATE_SPOT' is not a formal ECS launch type, but we will configure the proper capacity provider strategy if set here.", "default": "FARGATE", + "description": "The type of ECS task run infrastructure that should be used. Note that 'FARGATE_SPOT' is not a formal ECS launch type, but we will configure the proper capacity provider strategy if set here.", "enum": [ "FARGATE", "EC2", "EXTERNAL", "FARGATE_SPOT" ], + "title": "Launch Type", "type": "string" }, "capacity_provider_strategy": { - "title": "Capacity Provider Strategy", "description": "The capacity provider strategy to use when running the task. If a capacity provider strategy is specified, the selected launch type will be ignored.", - "type": "array", "items": { "$ref": "#/definitions/CapacityProvider" - } + }, + "title": "Capacity Provider Strategy", + "type": "array" }, "image": { - "title": "Image", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The image to use for the Prefect container in the task. If this value is not null, it will override the value in the task definition. This value defaults to a Prefect base image matching your local versions.", - "type": "string" + "title": "Image" }, "cpu": { - "title": "CPU", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, "description": "The amount of CPU to provide to the ECS task. Valid amounts are specified in the AWS documentation. If not provided, a default value of 1024 will be used unless present on the task definition.", - "type": "integer" + "title": "CPU" }, "memory": { - "title": "Memory", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, "description": "The amount of memory to provide to the ECS task. Valid amounts are specified in the AWS documentation. If not provided, a default value of 2048 will be used unless present on the task definition.", - "type": "integer" + "title": "Memory" }, "container_name": { - "title": "Container Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The name of the container flow run orchestration will occur in. If not specified, a default value of prefect will be used and if that is not found in the task definition the first container will be used.", - "type": "string" + "title": "Container Name" + }, + "prefect_api_key_secret_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An ARN of an AWS secret containing a Prefect API key. This key will be used to authenticate ECS tasks with Prefect Cloud. If not provided, the PREFECT_API_KEY environment variable will be used if the worker has one.", + "title": "Prefect API Key Secret ARN" + }, + "prefect_api_auth_string_secret_arn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "An ARN of an AWS secret containing a Prefect API auth string. This string will be used to authenticate ECS tasks with Prefect Cloud. If not provided, the PREFECT_API_AUTH_STRING environment variable will be used if the worker has one.", + "title": "Prefect API Auth String Secret ARN" }, "task_role_arn": { - "title": "Task Role ARN", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A role to attach to the task run. This controls the permissions of the task while it is running.", - "type": "string" + "title": "Task Role ARN" }, "execution_role_arn": { - "title": "Execution Role ARN", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "An execution role to use for the task. This controls the permissions of the task when it is launching. If this value is not null, it will override the value in the task definition. An execution role must be provided to capture logs from the container.", - "type": "string" + "title": "Execution Role ARN" }, "vpc_id": { - "title": "VPC ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The AWS VPC to link the task run to. This is only applicable when using the 'awsvpc' network mode for your task. FARGATE tasks require this network mode, but for EC2 tasks the default network mode is 'bridge'. If using the 'awsvpc' network mode and this field is null, your default VPC will be used. If no default VPC can be found, the task run will fail.", - "type": "string" + "title": "VPC ID" }, "configure_cloudwatch_logs": { - "title": "Configure Cloudwatch Logs", - "description": "If enabled, the Prefect container will be configured to send its output to the AWS CloudWatch logs service. This functionality requires an execution role with logs:CreateLogStream, logs:CreateLogGroup, and logs:PutLogEvents permissions. The default for this field is `False` unless `stream_output` is set.", - "type": "boolean" + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "If enabled, the Prefect container will be configured to send its output to the AWS CloudWatch logs service. This functionality requires an execution role with logs:CreateLogStream, logs:CreateLogGroup, and logs:PutLogEvents permissions. The default for this field is `False`.", + "title": "Configure Cloudwatch Logs" }, "cloudwatch_logs_options": { - "title": "Cloudwatch Logs Options", - "description": "When `configure_cloudwatch_logs` is enabled, this setting may be used to pass additional options to the CloudWatch logs configuration or override the default options. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html#create_awslogs_logdriver_options) for available options. ", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "When `configure_cloudwatch_logs` is enabled, this setting may be used to pass additional options to the CloudWatch logs configuration or override the default options. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html#create_awslogs_logdriver_options) for available options. ", + "title": "Cloudwatch Logs Options", + "type": "object" }, "cloudwatch_logs_prefix": { - "title": "Cloudwatch Logs Prefix", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "When `configure_cloudwatch_logs` is enabled, this setting may be used to set a prefix for the log group. If not provided, the default prefix will be `prefect-logs__`. If `awslogs-stream-prefix` is present in `Cloudwatch logs options` this setting will be ignored.", - "type": "string" + "title": "Cloudwatch Logs Prefix" }, "network_configuration": { - "title": "Network Configuration", + "additionalProperties": true, "description": "When `network_configuration` is supplied it will override ECS Worker'sawsvpcConfiguration that defined in the ECS task executing your workload. See the [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-awsvpcconfiguration.html) for available options.", + "title": "Network Configuration", "type": "object" }, - "stream_output": { - "title": "Stream Output", - "description": "If enabled, logs will be streamed from the Prefect container to the local console. Unless you have configured AWS CloudWatch logs manually on your task definition, this requires the same prerequisites outlined in `configure_cloudwatch_logs`.", - "type": "boolean" - }, - "task_start_timeout_seconds": { - "title": "Task Start Timeout Seconds", - "description": "The amount of time to watch for the start of the ECS task before marking it as failed. The task must enter a RUNNING state to be considered started.", - "default": 300, - "type": "integer" - }, - "task_watch_poll_interval": { - "title": "Task Watch Poll Interval", - "description": "The amount of time to wait between AWS API calls while monitoring the state of an ECS task.", - "default": 5.0, - "type": "number" - }, "auto_deregister_task_definition": { - "title": "Auto Deregister Task Definition", - "description": "If enabled, any task definitions that are created by this block will be deregistered. Existing task definitions linked by ARN will never be deregistered. Deregistering a task definition does not remove it from your AWS account, instead it will be marked as INACTIVE.", "default": false, + "description": "If enabled, any task definitions that are created by this block will be deregistered. Existing task definitions linked by ARN will never be deregistered. Deregistering a task definition does not remove it from your AWS account, instead it will be marked as INACTIVE.", + "title": "Auto Deregister Task Definition", "type": "boolean" }, "match_latest_revision_in_family": { - "title": "Match Latest Revision In Family", - "description": "If enabled, the most recent active revision in the task definition family will be compared against the desired ECS task configuration. If they are equal, the existing task definition will be used instead of registering a new one. If no family is specified the default family \"prefect\" will be used.", "default": false, + "description": "If enabled, the most recent active revision in the task definition family will be compared against the desired ECS task configuration. If they are equal, the existing task definition will be used instead of registering a new one. If no family is specified the default family \"prefect\" will be used.", + "title": "Match Latest Revision In Family", "type": "boolean" } }, + "type": "object", "definitions": { "AwsClientParameters": { - "title": "AwsClientParameters", "description": "Model used to manage extra parameters that you can pass when you initialize\nthe Client. If you want to find more information, see\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)\nfor more info about the possible client configurations.\n\nAttributes:\n api_version: The API version to use. By default, botocore will\n use the latest API version when creating a client. You only need\n to specify this parameter if you want to use a previous API version\n of the client.\n use_ssl: Whether or not to use SSL. By default, SSL is used.\n Note that not all services support non-ssl connections.\n verify: Whether or not to verify SSL certificates. By default\n SSL certificates are verified. If False, SSL will still be used\n (unless use_ssl is False), but SSL certificates\n will not be verified. Passing a file path to this is deprecated.\n verify_cert_path: A filename of the CA cert bundle to\n use. You can specify this argument if you want to use a\n different CA cert bundle than the one used by botocore.\n endpoint_url: The complete URL to use for the constructed\n client. Normally, botocore will automatically construct the\n appropriate URL to use when communicating with a service. You\n can specify a complete URL (including the \"http/https\" scheme)\n to override this behavior. If this value is provided,\n then ``use_ssl`` is ignored.\n config: Advanced configuration for Botocore clients. See\n [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html)\n for more details.", - "type": "object", "properties": { "api_version": { - "title": "API Version", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The API version to use.", - "type": "string" + "title": "API Version" }, "use_ssl": { - "title": "Use SSL", - "description": "Whether or not to use SSL.", "default": true, + "description": "Whether or not to use SSL.", + "title": "Use SSL", "type": "boolean" }, "verify": { - "title": "Verify", - "description": "Whether or not to verify SSL certificates.", - "default": true, "anyOf": [ { "type": "boolean" }, { - "type": "string", - "format": "file-path" + "format": "file-path", + "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Whether or not to verify SSL certificates.", + "title": "Verify" }, "verify_cert_path": { - "title": "Certificate Authority Bundle File Path", + "anyOf": [ + { + "format": "file-path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the CA cert bundle to use.", - "format": "file-path", - "type": "string" + "title": "Certificate Authority Bundle File Path" }, "endpoint_url": { - "title": "Endpoint URL", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The complete URL to use for the constructed client.", - "type": "string" + "title": "Endpoint URL" }, "config": { - "title": "Botocore Config", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "Advanced configuration for Botocore clients.", - "type": "object" + "title": "Botocore Config" } - } + }, + "title": "AwsClientParameters", + "type": "object" }, "AwsCredentials": { - "title": "AwsCredentials", + "block_schema_references": {}, + "block_type_slug": "aws-credentials", "description": "Block used to manage authentication with AWS. AWS authentication is\nhandled via the `boto3` module. Refer to the\n[boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)\nfor more info about the possible credential configurations.", - "type": "object", "properties": { "aws_access_key_id": { - "title": "AWS Access Key ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS access key ID.", - "type": "string" + "title": "AWS Access Key ID" }, "aws_secret_access_key": { - "title": "AWS Access Key Secret", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "A specific AWS secret access key.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "AWS Access Key Secret" }, "aws_session_token": { - "title": "AWS Session Token", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The session key for your AWS account. This is only needed when you are using temporary credentials.", - "type": "string" + "title": "AWS Session Token" }, "profile_name": { - "title": "Profile Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The profile to use when creating your session.", - "type": "string" + "title": "Profile Name" }, "region_name": { - "title": "Region Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The AWS Region where you want to create new connections.", - "type": "string" + "title": "Region Name" }, "aws_client_parameters": { - "title": "AWS Client Parameters", + "$ref": "#/definitions/AwsClientParameters", "description": "Extra parameters to initialize the Client.", - "allOf": [ - { - "$ref": "#/definitions/AwsClientParameters" - } - ] + "title": "AWS Client Parameters" } }, - "block_type_slug": "aws-credentials", "secret_fields": [ "aws_secret_access_key" ], - "block_schema_references": {} + "title": "AwsCredentials", + "type": "object" }, "CapacityProvider": { - "title": "CapacityProvider", "description": "The capacity provider strategy to use when running the task.", - "type": "object", "properties": { "capacityProvider": { "title": "Capacityprovider", @@ -439,14 +637,16 @@ "capacityProvider", "weight", "base" - ] + ], + "title": "CapacityProvider", + "type": "object" } } } }, "description": "Execute flow runs within containers on AWS ECS. Works with EC2 and Fargate clusters. Requires an AWS account.", "display_name": "AWS Elastic Container Service", - "documentation_url": "https://prefecthq.github.io/prefect-aws/ecs_worker/", + "documentation_url": "https://docs.prefect.io/integrations/prefect-aws/", "install_command": "pip install prefect-aws", "is_beta": false, "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/d74b16fe84ce626345adf235a47008fea2869a60-225x225.png", From 5692514d400ce0c189cba68f401077b5a8cb1509 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:38 -0500 Subject: [PATCH 36/42] Add `prefect-azure` `v0.4.6` to worker records --- collections/prefect-azure/workers/v0.4.6.json | 437 ++++++++++++++++++ 1 file changed, 437 insertions(+) create mode 100644 collections/prefect-azure/workers/v0.4.6.json diff --git a/collections/prefect-azure/workers/v0.4.6.json b/collections/prefect-azure/workers/v0.4.6.json new file mode 100644 index 000000000..9568e8869 --- /dev/null +++ b/collections/prefect-azure/workers/v0.4.6.json @@ -0,0 +1,437 @@ +{ + "prefect-azure": { + "azure-container-instance": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "image": "{{ image }}", + "resource_group_name": "{{ resource_group_name }}", + "subscription_id": "{{ subscription_id }}", + "identities": "{{ identities }}", + "entrypoint": "{{ entrypoint }}", + "image_registry": "{{ image_registry }}", + "cpu": "{{ cpu }}", + "gpu_count": "{{ gpu_count }}", + "gpu_sku": "{{ gpu_sku }}", + "memory": "{{ memory }}", + "subnet_ids": "{{ subnet_ids }}", + "dns_servers": "{{ dns_servers }}", + "stream_output": "{{ stream_output }}", + "aci_credentials": "{{ aci_credentials }}", + "task_start_timeout_seconds": "{{ task_start_timeout_seconds }}", + "task_watch_poll_interval": "{{ task_watch_poll_interval }}", + "arm_template": { + "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "container_group_name": { + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The name of the container group to create." + }, + "type": "string" + }, + "container_name": { + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The name of the container to create." + }, + "type": "string" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2022-09-01", + "location": "[parameters('location')]", + "name": "[parameters('container_group_name')]", + "properties": { + "containers": [ + { + "name": "[parameters('container_name')]", + "properties": { + "image": "{{ image }}", + "command": "{{ command }}", + "resources": { + "requests": { + "cpu": "{{ cpu }}", + "memoryInGB": "{{ memory }}" + } + }, + "environmentVariables": [] + } + } + ], + "osType": "Linux", + "restartPolicy": "Never" + }, + "type": "Microsoft.ContainerInstance/containerGroups" + } + ] + }, + "keep_container_group": "{{ keep_container_group }}" + }, + "variables": { + "description": "Variables for an Azure Container Instance flow run.", + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "image": { + "description": "The image to use for the Prefect container in the task. This value defaults to a Prefect base image matching your local versions.", + "title": "Image", + "type": "string" + }, + "resource_group_name": { + "description": "The name of the Azure Resource Group in which to run Prefect ACI tasks.", + "title": "Azure Resource Group Name", + "type": "string" + }, + "subscription_id": { + "description": "The ID of the Azure subscription to create containers under.", + "format": "password", + "title": "Azure Subscription ID", + "type": "string", + "writeOnly": true + }, + "identities": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A list of user-assigned identities to associate with the container group. The identities should be an ARM resource IDs in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.", + "title": "Identities" + }, + "entrypoint": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "/opt/prefect/entrypoint.sh", + "description": "The entrypoint of the container you wish you run. This value defaults to the entrypoint used by Prefect images and should only be changed when using a custom image that is not based on an official Prefect image. Any commands set on deployments will be passed to the entrypoint as parameters.", + "title": "Entrypoint" + }, + "image_registry": { + "anyOf": [ + { + "$ref": "#/definitions/ACRManagedIdentity" + }, + { + "$ref": "#/definitions/DockerRegistryCredentials" + }, + { + "type": "null" + } + ], + "default": null, + "description": "To use any private container registry with a username and password, choose DockerRegistry. To use a private Azure Container Registry with a managed identity, choose ACRManagedIdentity.", + "title": "Image Registry (Optional)" + }, + "cpu": { + "default": 1.0, + "description": "The number of virtual CPUs to assign to the task container. If not provided, a default value of 1.0 will be used.", + "title": "CPU", + "type": "number" + }, + "gpu_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The number of GPUs to assign to the task container. If not provided, no GPU will be used.", + "title": "GPU Count" + }, + "gpu_sku": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Azure GPU SKU to use. See the ACI documentation for a list of GPU SKUs available in each Azure region.", + "title": "GPU SKU" + }, + "memory": { + "default": 1.0, + "description": "The amount of memory in gigabytes to provide to the ACI task. Valid amounts are specified in the Azure documentation. If not provided, a default value of 1.0 will be used unless present on the task definition.", + "title": "Memory", + "type": "number" + }, + "subnet_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A list of subnet IDs to associate with the container group. ", + "title": "Subnet IDs" + }, + "dns_servers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A list of DNS servers to associate with the container group.", + "title": "DNS Servers" + }, + "aci_credentials": { + "$ref": "#/definitions/AzureContainerInstanceCredentials", + "description": "The credentials to use to authenticate with Azure." + }, + "stream_output": { + "default": false, + "description": "If `True`, logs will be streamed from the Prefect container to the local console.", + "title": "Stream Output", + "type": "boolean" + }, + "task_start_timeout_seconds": { + "default": 240, + "description": "The amount of time to watch for the start of the ACI container. before marking it as failed.", + "title": "Task Start Timeout Seconds", + "type": "integer" + }, + "task_watch_poll_interval": { + "default": 5.0, + "description": "The number of seconds to wait between Azure API calls while monitoring the state of an Azure Container Instances task.", + "title": "Task Watch Poll Interval", + "type": "number" + }, + "keep_container_group": { + "default": false, + "description": "Keep the completed container group on Azure.", + "title": "Keep Container Group After Completion", + "type": "boolean" + } + }, + "required": [ + "resource_group_name", + "subscription_id" + ], + "type": "object", + "definitions": { + "ACRManagedIdentity": { + "description": "Use a Managed Identity to access Azure Container registry. Requires the\nuser-assigned managed identity be available to the ACI container group.", + "properties": { + "registry_url": { + "description": "The URL to the registry, such as myregistry.azurecr.io. Generally, 'http' or 'https' can be omitted.", + "title": "Registry URL", + "type": "string" + }, + "identity": { + "description": "The user-assigned Azure managed identity for the private registry.", + "title": "Identity", + "type": "string" + } + }, + "required": [ + "registry_url", + "identity" + ], + "title": "ACRManagedIdentity", + "type": "object" + }, + "AzureContainerInstanceCredentials": { + "block_schema_references": {}, + "block_type_slug": "azure-container-instance-credentials", + "description": "Block used to manage Azure Container Instances authentication. Stores Azure Service\nPrincipal authentication data.", + "properties": { + "client_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The service principal client ID. If none of client_id, tenant_id, and client_secret are provided, will use DefaultAzureCredential; else will need to provide all three to use ClientSecretCredential.", + "title": "Client ID" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The service principal tenant ID.If none of client_id, tenant_id, and client_secret are provided, will use DefaultAzureCredential; else will need to provide all three to use ClientSecretCredential.", + "title": "Tenant ID" + }, + "client_secret": { + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The service principal client secret.If none of client_id, tenant_id, and client_secret are provided, will use DefaultAzureCredential; else will need to provide all three to use ClientSecretCredential.", + "title": "Client Secret" + }, + "credential_kwargs": { + "additionalProperties": true, + "description": "Additional keyword arguments to pass to `ClientSecretCredential` or `DefaultAzureCredential`.", + "title": "Additional Credential Keyword Arguments", + "type": "object" + } + }, + "secret_fields": [ + "client_secret" + ], + "title": "AzureContainerInstanceCredentials", + "type": "object" + }, + "DockerRegistryCredentials": { + "block_schema_references": {}, + "block_type_slug": "docker-registry-credentials", + "description": "Store credentials for interacting with a Docker Registry.", + "properties": { + "username": { + "description": "The username to log into the registry with.", + "title": "Username", + "type": "string" + }, + "password": { + "description": "The password to log into the registry with.", + "format": "password", + "title": "Password", + "type": "string", + "writeOnly": true + }, + "registry_url": { + "description": "The URL to the registry. Generally, \"http\" or \"https\" can be omitted.", + "examples": [ + "index.docker.io" + ], + "title": "Registry Url", + "type": "string" + }, + "reauth": { + "default": true, + "description": "Whether or not to reauthenticate on each interaction.", + "title": "Reauth", + "type": "boolean" + } + }, + "required": [ + "username", + "password", + "registry_url" + ], + "secret_fields": [ + "password" + ], + "title": "DockerRegistryCredentials", + "type": "object" + } + } + } + }, + "description": "Execute flow runs within containers on Azure's Container Instances service. Requires an Azure account.", + "display_name": "Azure Container Instances", + "documentation_url": "https://docs.prefect.io/integrations/prefect-azure", + "install_command": "pip install prefect-azure", + "is_beta": false, + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/54e3fa7e00197a4fbd1d82ed62494cb58d08c96a-250x250.png", + "type": "azure-container-instance" + } + } +} \ No newline at end of file From 47bceef68f0040a6576183eca3f9f8039f4e8ca9 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:40 -0500 Subject: [PATCH 37/42] Update aggregate worker metadata with `prefect-azure` `v0.4.6` --- views/aggregate-worker-metadata.json | 378 +++++++++++++++++---------- 1 file changed, 241 insertions(+), 137 deletions(-) diff --git a/views/aggregate-worker-metadata.json b/views/aggregate-worker-metadata.json index 70a2869cb..f9eb4b1fc 100644 --- a/views/aggregate-worker-metadata.json +++ b/views/aggregate-worker-metadata.json @@ -681,34 +681,33 @@ "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for all resources." - } - }, "container_group_name": { - "type": "string", "defaultValue": "[uniqueString(resourceGroup().id)]", "metadata": { "description": "The name of the container group to create." - } + }, + "type": "string" }, "container_name": { - "type": "string", "defaultValue": "[uniqueString(resourceGroup().id)]", "metadata": { "description": "The name of the container to create." - } + }, + "type": "string" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "type": "string" } }, "resources": [ { - "type": "Microsoft.ContainerInstance/containerGroups", "apiVersion": "2022-09-01", - "name": "[parameters('container_group_name')]", "location": "[parameters('location')]", + "name": "[parameters('container_group_name')]", "properties": { "containers": [ { @@ -728,256 +727,361 @@ ], "osType": "Linux", "restartPolicy": "Never" - } + }, + "type": "Microsoft.ContainerInstance/containerGroups" } ] - } + }, + "keep_container_group": "{{ keep_container_group }}" }, "variables": { "description": "Variables for an Azure Container Instance flow run.", - "type": "object", "properties": { "name": { - "title": "Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Name given to infrastructure created by a worker.", - "type": "string" + "title": "Name" }, "env": { - "title": "Environment Variables", - "description": "Environment variables to set when starting a flow run.", - "type": "object", "additionalProperties": { - "type": "string" - } + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" }, "labels": { - "title": "Labels", - "description": "Labels applied to infrastructure created by a worker.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" }, "command": { - "title": "Command", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", - "type": "string" + "title": "Command" }, "image": { - "title": "Image", "description": "The image to use for the Prefect container in the task. This value defaults to a Prefect base image matching your local versions.", + "title": "Image", "type": "string" }, "resource_group_name": { - "title": "Azure Resource Group Name", "description": "The name of the Azure Resource Group in which to run Prefect ACI tasks.", + "title": "Azure Resource Group Name", "type": "string" }, "subscription_id": { - "title": "Azure Subscription ID", "description": "The ID of the Azure subscription to create containers under.", + "format": "password", + "title": "Azure Subscription ID", "type": "string", - "writeOnly": true, - "format": "password" + "writeOnly": true }, "identities": { - "title": "Identities", + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, "description": "A list of user-assigned identities to associate with the container group. The identities should be an ARM resource IDs in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.", - "type": "array", - "items": { - "type": "string" - } + "title": "Identities" }, "entrypoint": { - "title": "Entrypoint", - "description": "The entrypoint of the container you wish you run. This value defaults to the entrypoint used by Prefect images and should only be changed when using a custom image that is not based on an official Prefect image. Any commands set on deployments will be passed to the entrypoint as parameters.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], "default": "/opt/prefect/entrypoint.sh", - "type": "string" + "description": "The entrypoint of the container you wish you run. This value defaults to the entrypoint used by Prefect images and should only be changed when using a custom image that is not based on an official Prefect image. Any commands set on deployments will be passed to the entrypoint as parameters.", + "title": "Entrypoint" }, "image_registry": { - "title": "Image Registry (Optional)", - "description": "To use any private container registry with a username and password, choose DockerRegistry. To use a private Azure Container Registry with a managed identity, choose ACRManagedIdentity.", "anyOf": [ { - "$ref": "#/definitions/DockerRegistry" + "$ref": "#/definitions/ACRManagedIdentity" }, { - "$ref": "#/definitions/ACRManagedIdentity" + "$ref": "#/definitions/DockerRegistryCredentials" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "To use any private container registry with a username and password, choose DockerRegistry. To use a private Azure Container Registry with a managed identity, choose ACRManagedIdentity.", + "title": "Image Registry (Optional)" }, "cpu": { - "title": "CPU", - "description": "The number of virtual CPUs to assign to the task container. If not provided, a default value of 1.0 will be used.", "default": 1.0, + "description": "The number of virtual CPUs to assign to the task container. If not provided, a default value of 1.0 will be used.", + "title": "CPU", "type": "number" }, "gpu_count": { - "title": "GPU Count", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, "description": "The number of GPUs to assign to the task container. If not provided, no GPU will be used.", - "type": "integer" + "title": "GPU Count" }, "gpu_sku": { - "title": "GPU SKU", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The Azure GPU SKU to use. See the ACI documentation for a list of GPU SKUs available in each Azure region.", - "type": "string" + "title": "GPU SKU" }, "memory": { - "title": "Memory", - "description": "The amount of memory in gigabytes to provide to the ACI task. Valid amounts are specified in the Azure documentation. If not provided, a default value of 1.0 will be used unless present on the task definition.", "default": 1.0, + "description": "The amount of memory in gigabytes to provide to the ACI task. Valid amounts are specified in the Azure documentation. If not provided, a default value of 1.0 will be used unless present on the task definition.", + "title": "Memory", "type": "number" }, "subnet_ids": { - "title": "Subnet IDs", + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, "description": "A list of subnet IDs to associate with the container group. ", - "type": "array", - "items": { - "type": "string" - } + "title": "Subnet IDs" }, "dns_servers": { - "title": "DNS Servers", + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, "description": "A list of DNS servers to associate with the container group.", - "type": "array", - "items": { - "type": "string" - } + "title": "DNS Servers" }, "aci_credentials": { - "title": "Aci Credentials", - "description": "The credentials to use to authenticate with Azure.", - "allOf": [ - { - "$ref": "#/definitions/AzureContainerInstanceCredentials" - } - ] + "$ref": "#/definitions/AzureContainerInstanceCredentials", + "description": "The credentials to use to authenticate with Azure." }, "stream_output": { - "title": "Stream Output", - "description": "If `True`, logs will be streamed from the Prefect container to the local console.", "default": false, + "description": "If `True`, logs will be streamed from the Prefect container to the local console.", + "title": "Stream Output", "type": "boolean" }, "task_start_timeout_seconds": { - "title": "Task Start Timeout Seconds", - "description": "The amount of time to watch for the start of the ACI container. before marking it as failed.", "default": 240, + "description": "The amount of time to watch for the start of the ACI container. before marking it as failed.", + "title": "Task Start Timeout Seconds", "type": "integer" }, "task_watch_poll_interval": { - "title": "Task Watch Poll Interval", - "description": "The number of seconds to wait between Azure API calls while monitoring the state of an Azure Container Instances task.", "default": 5.0, + "description": "The number of seconds to wait between Azure API calls while monitoring the state of an Azure Container Instances task.", + "title": "Task Watch Poll Interval", "type": "number" + }, + "keep_container_group": { + "default": false, + "description": "Keep the completed container group on Azure.", + "title": "Keep Container Group After Completion", + "type": "boolean" } }, "required": [ "resource_group_name", "subscription_id" ], + "type": "object", "definitions": { - "DockerRegistry": { - "title": "DockerRegistry", - "description": "Connects to a Docker registry.\n\nRequires a Docker Engine to be connectable.", - "type": "object", - "properties": { - "username": { - "title": "Username", - "description": "The username to log into the registry with.", - "type": "string" - }, - "password": { - "title": "Password", - "description": "The password to log into the registry with.", - "type": "string", - "writeOnly": true, - "format": "password" - }, - "registry_url": { - "title": "Registry Url", - "description": "The URL to the registry. Generally, \"http\" or \"https\" can be omitted.", - "type": "string" - }, - "reauth": { - "title": "Reauth", - "description": "Whether or not to reauthenticate on each interaction.", - "default": true, - "type": "boolean" - } - }, - "required": [ - "username", - "password", - "registry_url" - ], - "block_type_slug": "docker-registry", - "secret_fields": [ - "password" - ], - "block_schema_references": {} - }, "ACRManagedIdentity": { - "title": "ACRManagedIdentity", "description": "Use a Managed Identity to access Azure Container registry. Requires the\nuser-assigned managed identity be available to the ACI container group.", - "type": "object", "properties": { "registry_url": { - "title": "Registry URL", "description": "The URL to the registry, such as myregistry.azurecr.io. Generally, 'http' or 'https' can be omitted.", + "title": "Registry URL", "type": "string" }, "identity": { - "title": "Identity", "description": "The user-assigned Azure managed identity for the private registry.", + "title": "Identity", "type": "string" } }, "required": [ "registry_url", "identity" - ] + ], + "title": "ACRManagedIdentity", + "type": "object" }, "AzureContainerInstanceCredentials": { - "title": "AzureContainerInstanceCredentials", + "block_schema_references": {}, + "block_type_slug": "azure-container-instance-credentials", "description": "Block used to manage Azure Container Instances authentication. Stores Azure Service\nPrincipal authentication data.", - "type": "object", "properties": { "client_id": { - "title": "Client ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The service principal client ID. If none of client_id, tenant_id, and client_secret are provided, will use DefaultAzureCredential; else will need to provide all three to use ClientSecretCredential.", - "type": "string" + "title": "Client ID" }, "tenant_id": { - "title": "Tenant ID", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The service principal tenant ID.If none of client_id, tenant_id, and client_secret are provided, will use DefaultAzureCredential; else will need to provide all three to use ClientSecretCredential.", - "type": "string" + "title": "Tenant ID" }, "client_secret": { - "title": "Client Secret", + "anyOf": [ + { + "format": "password", + "type": "string", + "writeOnly": true + }, + { + "type": "null" + } + ], + "default": null, "description": "The service principal client secret.If none of client_id, tenant_id, and client_secret are provided, will use DefaultAzureCredential; else will need to provide all three to use ClientSecretCredential.", - "type": "string", - "writeOnly": true, - "format": "password" + "title": "Client Secret" }, "credential_kwargs": { - "title": "Additional Credential Keyword Arguments", + "additionalProperties": true, "description": "Additional keyword arguments to pass to `ClientSecretCredential` or `DefaultAzureCredential`.", + "title": "Additional Credential Keyword Arguments", "type": "object" } }, - "block_type_slug": "azure-container-instance-credentials", "secret_fields": [ "client_secret" ], - "block_schema_references": {} + "title": "AzureContainerInstanceCredentials", + "type": "object" + }, + "DockerRegistryCredentials": { + "block_schema_references": {}, + "block_type_slug": "docker-registry-credentials", + "description": "Store credentials for interacting with a Docker Registry.", + "properties": { + "username": { + "description": "The username to log into the registry with.", + "title": "Username", + "type": "string" + }, + "password": { + "description": "The password to log into the registry with.", + "format": "password", + "title": "Password", + "type": "string", + "writeOnly": true + }, + "registry_url": { + "description": "The URL to the registry. Generally, \"http\" or \"https\" can be omitted.", + "examples": [ + "index.docker.io" + ], + "title": "Registry Url", + "type": "string" + }, + "reauth": { + "default": true, + "description": "Whether or not to reauthenticate on each interaction.", + "title": "Reauth", + "type": "boolean" + } + }, + "required": [ + "username", + "password", + "registry_url" + ], + "secret_fields": [ + "password" + ], + "title": "DockerRegistryCredentials", + "type": "object" } } } }, "description": "Execute flow runs within containers on Azure's Container Instances service. Requires an Azure account.", "display_name": "Azure Container Instances", - "documentation_url": "https://prefecthq.github.io/prefect-azure/container_instance_worker/", + "documentation_url": "https://docs.prefect.io/integrations/prefect-azure", "install_command": "pip install prefect-azure", "is_beta": false, "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/54e3fa7e00197a4fbd1d82ed62494cb58d08c96a-250x250.png", From 60a14dd768dfc4d92832b31746f2b06388f1ad62 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:42 -0500 Subject: [PATCH 38/42] Add `prefect-ray` `v0.4.5` to block records --- collections/prefect-ray/blocks/v0.4.5.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 collections/prefect-ray/blocks/v0.4.5.json diff --git a/collections/prefect-ray/blocks/v0.4.5.json b/collections/prefect-ray/blocks/v0.4.5.json new file mode 100644 index 000000000..e628ff332 --- /dev/null +++ b/collections/prefect-ray/blocks/v0.4.5.json @@ -0,0 +1,5 @@ +{ + "prefect-ray": { + "block_types": {} + } +} \ No newline at end of file From 1435f840a6ccf0fe9e08f3a3c83dbf15d10930c1 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:43 -0500 Subject: [PATCH 39/42] Update aggregate block metadata with `prefect-ray` `v0.4.5` From f92c22705477cc7e295a535c9a7cc6dc2773d2c2 Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:44 -0500 Subject: [PATCH 40/42] Add `prefect-ray` `v0.4.5` to worker records --- collections/prefect-ray/workers/v0.4.5.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 collections/prefect-ray/workers/v0.4.5.json diff --git a/collections/prefect-ray/workers/v0.4.5.json b/collections/prefect-ray/workers/v0.4.5.json new file mode 100644 index 000000000..6d14ceacd --- /dev/null +++ b/collections/prefect-ray/workers/v0.4.5.json @@ -0,0 +1,3 @@ +{ + "prefect-ray": {} +} \ No newline at end of file From 99e9ad0affa28efa30b6f3aa709310ab6a7e924e Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:46 -0500 Subject: [PATCH 41/42] Add `prefect-gcp` `v0.6.11` to worker records --- collections/prefect-gcp/workers/v0.6.11.json | 1054 ++++++++++++++++++ 1 file changed, 1054 insertions(+) create mode 100644 collections/prefect-gcp/workers/v0.6.11.json diff --git a/collections/prefect-gcp/workers/v0.6.11.json b/collections/prefect-gcp/workers/v0.6.11.json new file mode 100644 index 000000000..e8008f008 --- /dev/null +++ b/collections/prefect-gcp/workers/v0.6.11.json @@ -0,0 +1,1054 @@ +{ + "prefect-gcp": { + "cloud-run": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "region": "{{ region }}", + "credentials": "{{ credentials }}", + "prefect_api_key_secret": "{{ prefect_api_key_secret }}", + "prefect_api_auth_string_secret": "{{ prefect_api_auth_string_secret }}", + "job_body": { + "apiVersion": "run.googleapis.com/v1", + "kind": "Job", + "metadata": { + "annotations": { + "run.googleapis.com/launch-stage": "BETA" + }, + "name": "{{ name }}" + }, + "spec": { + "template": { + "metadata": { + "annotations": { + "run.googleapis.com/vpc-access-connector": "{{ vpc_connector_name }}" + } + }, + "spec": { + "template": { + "spec": { + "containers": [ + { + "command": "{{ command }}", + "image": "{{ image }}", + "resources": { + "limits": { + "cpu": "{{ cpu }}", + "memory": "{{ memory }}" + }, + "requests": { + "cpu": "{{ cpu }}", + "memory": "{{ memory }}" + } + } + } + ], + "serviceAccountName": "{{ service_account_name }}", + "timeoutSeconds": "{{ timeout }}" + } + } + } + } + } + }, + "timeout": "{{ timeout }}", + "keep_job": "{{ keep_job }}" + }, + "variables": { + "description": "Default variables for the Cloud Run worker.\n\nThe schema for this class is used to populate the `variables` section of the default\nbase job template.", + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "region": { + "default": "us-central1", + "description": "The region where the Cloud Run Job resides.", + "examples": [ + "us-central1" + ], + "title": "Region", + "type": "string" + }, + "credentials": { + "anyOf": [ + { + "$ref": "#/definitions/GcpCredentials" + }, + { + "type": "null" + } + ], + "description": "The GCP Credentials used to initiate the Cloud Run Job. If not provided credentials will be inferred from the local environment.", + "title": "GCP Credentials" + }, + "prefect_api_key_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GCP secret containing a Prefect API Key. This key will be used to authenticate Cloud Run tasks with Prefect Cloud. If not provided, the PREFECT_API_KEY environment variable will be used if the worker has one.", + "title": "Prefect API Key Secret" + }, + "prefect_api_auth_string_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GCP secret containing a Prefect API authorization string. This string will be used to authenticate Cloud Run tasks with Prefect Cloud. If not provided, the PREFECT_API_AUTH_STRING environment variable will be used if the worker has one.", + "title": "Prefect API Auth String Secret" + }, + "image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image to use for a new Cloud Run Job. If not set, the latest Prefect image will be used. See https://cloud.google.com/run/docs/deploying#images.", + "examples": [ + "docker.io/prefecthq/prefect:3-latest" + ], + "title": "Image Name" + }, + "cpu": { + "anyOf": [ + { + "pattern": "^(\\d*000)m$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The amount of compute allocated to the Cloud Run Job. (1000m = 1 CPU). See https://cloud.google.com/run/docs/configuring/cpu#setting-jobs.", + "examples": [ + "1000m" + ], + "title": "CPU" + }, + "memory": { + "anyOf": [ + { + "pattern": "^\\d+(?:G|Gi|M|Mi)$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The amount of memory allocated to the Cloud Run Job. Must be specified in units of 'G', 'Gi', 'M', or 'Mi'. See https://cloud.google.com/run/docs/configuring/memory-limits#setting.", + "examples": [ + "512Mi" + ], + "title": "Memory" + }, + "vpc_connector_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the VPC connector to use for the Cloud Run Job.", + "title": "VPC Connector Name" + }, + "service_account_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the service account to use for the task execution of Cloud Run Job. By default Cloud Run jobs run as the default Compute Engine Service Account. ", + "examples": [ + "service-account@example.iam.gserviceaccount.com" + ], + "title": "Service Account Name" + }, + "keep_job": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": false, + "description": "Keep the completed Cloud Run Job after it has run.", + "title": "Keep Job After Completion" + }, + "timeout": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 3600, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 600, + "description": "Max allowed duration the Job may be active before Cloud Run will actively try to mark it failed and kill associated containers (maximum of 3600 seconds, 1 hour).", + "title": "Job Timeout" + } + }, + "type": "object", + "definitions": { + "GcpCredentials": { + "block_schema_references": {}, + "block_type_slug": "gcp-credentials", + "description": "Block used to manage authentication with GCP. Google authentication is\nhandled via the `google.oauth2` module or through the CLI.\nSpecify either one of service `account_file` or `service_account_info`; if both\nare not specified, the client will try to detect the credentials following Google's\n[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).\nSee Google's [Authentication documentation](https://cloud.google.com/docs/authentication#service-accounts)\nfor details on inference and recommended authentication patterns.", + "properties": { + "service_account_file": { + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the service account JSON keyfile.", + "title": "Service Account File" + }, + "service_account_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The contents of the keyfile as a dict.", + "title": "Service Account Info" + }, + "project": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP project to use for the client.", + "title": "Project" + } + }, + "secret_fields": [ + "service_account_info.*" + ], + "title": "GcpCredentials", + "type": "object" + }, + "SecretKeySelector": { + "description": "SecretKeySelector is a data model for specifying a GCP secret to inject\ninto a Cloud Run V2 Job as an environment variable.\nFollows Cloud Run V2 rest API, docs:\nhttps://cloud.google.com/run/docs/reference/rest/v2/Container#SecretKeySelector", + "properties": { + "secret": { + "title": "Secret", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "secret", + "version" + ], + "title": "SecretKeySelector", + "type": "object" + } + } + } + }, + "description": "Execute flow runs within containers on Google Cloud Run. Requires a Google Cloud Platform account.", + "display_name": "Google Cloud Run", + "documentation_url": "https://docs.prefect.io/integrations/prefect-gcp", + "install_command": "pip install prefect-gcp", + "is_beta": false, + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/10424e311932e31c477ac2b9ef3d53cefbaad708-250x250.png", + "type": "cloud-run" + }, + "cloud-run-v2": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "credentials": "{{ credentials }}", + "env_from_secrets": "{{ env_from_secrets }}", + "prefect_api_key_secret": "{{ prefect_api_key_secret }}", + "prefect_api_auth_string_secret": "{{ prefect_api_auth_string_secret }}", + "cloudsql_instances": "{{ cloudsql_instances }}", + "job_body": { + "client": "prefect", + "launchStage": "{{ launch_stage }}", + "template": { + "template": { + "containers": [ + { + "args": "{{ args }}", + "command": "{{ command }}", + "env": [], + "image": "{{ image }}", + "resources": { + "limits": { + "cpu": "{{ cpu }}", + "memory": "{{ memory }}" + } + } + } + ], + "maxRetries": "{{ max_retries }}", + "serviceAccount": "{{ service_account_name }}", + "timeout": "{{ timeout }}", + "vpcAccess": { + "connector": "{{ vpc_connector_name }}" + } + } + } + }, + "keep_job": "{{ keep_job }}", + "region": "{{ region }}", + "timeout": "{{ timeout }}" + }, + "variables": { + "description": "Default variables for the v2 Cloud Run worker.\n\nThe schema for this class is used to populate the `variables` section of the\ndefault base job template.", + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "credentials": { + "$ref": "#/definitions/GcpCredentials", + "description": "The GCP Credentials used to connect to Cloud Run. If not provided credentials will be inferred from the local environment.", + "title": "GCP Credentials" + }, + "region": { + "default": "us-central1", + "description": "The region in which to run the Cloud Run job", + "title": "Region", + "type": "string" + }, + "image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "prefecthq/prefect:3-latest", + "description": "The image to use for the Cloud Run job. If not provided the default Prefect image will be used.", + "title": "Image Name" + }, + "args": { + "description": "The arguments to pass to the Cloud Run Job V2's entrypoint command.", + "items": { + "type": "string" + }, + "title": "Args", + "type": "array" + }, + "env_from_secrets": { + "additionalProperties": { + "$ref": "#/definitions/SecretKeySelector" + }, + "description": "Environment variables to set from GCP secrets when starting a flow run.", + "examples": [ + { + "ENV_VAR_NAME": { + "secret": "SECRET_NAME", + "version": "latest" + } + } + ], + "title": "Environment Variables from Secrets", + "type": "object" + }, + "prefect_api_key_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP secret to use for the Prefect API key. When provided, the secret will be used instead of the PREFECT_API_KEY environment variable.", + "examples": [ + { + "secret": "prefect-api-key", + "version": "latest" + } + ], + "title": "Prefect API Key Secret" + }, + "prefect_api_auth_string_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP secret to use for the Prefect API auth string. When provided, the secret will be used instead of the PREFECT_API_AUTH_STRING environment variable.", + "examples": [ + { + "secret": "prefect-api-auth-string", + "version": "latest" + } + ], + "title": "Prefect API Auth String Secret" + }, + "cloudsql_instances": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "List of Cloud SQL instance connection names to connect to. Format: {project}:{location}:{instance}", + "examples": [ + "project:region:instance-id" + ], + "title": "Cloud SQL Instances" + }, + "keep_job": { + "default": false, + "description": "Keep the completed Cloud run job on Google Cloud Platform.", + "title": "Keep Job After Completion", + "type": "boolean" + }, + "launch_stage": { + "default": "BETA", + "description": "The launch stage of the Cloud Run Job V2. See https://cloud.google.com/run/docs/about-features-categories for additional details.", + "enum": [ + "ALPHA", + "BETA", + "GA", + "DEPRECATED", + "EARLY_ACCESS", + "PRELAUNCH", + "UNIMPLEMENTED", + "LAUNCH_TAG_UNSPECIFIED" + ], + "title": "Launch Stage", + "type": "string" + }, + "max_retries": { + "default": 0, + "description": "The number of times to retry the Cloud Run job.", + "title": "Max Retries", + "type": "integer" + }, + "cpu": { + "default": "1000m", + "description": "The CPU to allocate to the Cloud Run job.", + "title": "CPU", + "type": "string" + }, + "memory": { + "default": "512Mi", + "description": "The memory to allocate to the Cloud Run job along with the units, whichcould be: G, Gi, M, Mi.", + "examples": [ + "512Mi" + ], + "pattern": "^\\d+(?:G|Gi|M|Mi)$", + "title": "Memory", + "type": "string" + }, + "timeout": { + "default": 600, + "description": "Max allowed time duration the Job may be active before Cloud Run will actively try to mark it failed and kill associated containers (maximum of 86400 seconds, 1 day).", + "exclusiveMinimum": 0, + "maximum": 86400, + "title": "Job Timeout", + "type": "integer" + }, + "vpc_connector_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the VPC connector to use for the Cloud Run job.", + "title": "VPC Connector Name" + }, + "service_account_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the service account to use for the task execution of Cloud Run Job. By default Cloud Run jobs run as the default Compute Engine Service Account.", + "examples": [ + "service-account@example.iam.gserviceaccount.com" + ], + "title": "Service Account Name" + } + }, + "type": "object", + "definitions": { + "GcpCredentials": { + "block_schema_references": {}, + "block_type_slug": "gcp-credentials", + "description": "Block used to manage authentication with GCP. Google authentication is\nhandled via the `google.oauth2` module or through the CLI.\nSpecify either one of service `account_file` or `service_account_info`; if both\nare not specified, the client will try to detect the credentials following Google's\n[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).\nSee Google's [Authentication documentation](https://cloud.google.com/docs/authentication#service-accounts)\nfor details on inference and recommended authentication patterns.", + "properties": { + "service_account_file": { + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the service account JSON keyfile.", + "title": "Service Account File" + }, + "service_account_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The contents of the keyfile as a dict.", + "title": "Service Account Info" + }, + "project": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP project to use for the client.", + "title": "Project" + } + }, + "secret_fields": [ + "service_account_info.*" + ], + "title": "GcpCredentials", + "type": "object" + }, + "SecretKeySelector": { + "description": "SecretKeySelector is a data model for specifying a GCP secret to inject\ninto a Cloud Run V2 Job as an environment variable.\nFollows Cloud Run V2 rest API, docs:\nhttps://cloud.google.com/run/docs/reference/rest/v2/Container#SecretKeySelector", + "properties": { + "secret": { + "title": "Secret", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "secret", + "version" + ], + "title": "SecretKeySelector", + "type": "object" + } + } + } + }, + "description": "Execute flow runs within containers on Google Cloud Run (V2 API). Requires a Google Cloud Platform account.", + "display_name": "Google Cloud Run V2", + "documentation_url": "https://docs.prefect.io/integrations/prefect-gcp", + "install_command": "pip install prefect-gcp", + "is_beta": false, + "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/4SpnOBvMYkHp6z939MDKP6/549a91bc1ce9afd4fb12c68db7b68106/social-icon-google-cloud-1200-630.png?h=250", + "type": "cloud-run-v2" + }, + "vertex-ai": { + "default_base_job_configuration": { + "job_configuration": { + "command": "{{ command }}", + "env": "{{ env }}", + "labels": "{{ labels }}", + "name": "{{ name }}", + "region": "{{ region }}", + "credentials": "{{ credentials }}", + "job_spec": { + "enable_dashboard_access": "{{ enable_dashboard_access }}", + "enable_web_access": "{{ enable_web_access }}", + "maximum_run_time_hours": "{{ maximum_run_time_hours }}", + "network": "{{ network }}", + "reserved_ip_ranges": "{{ reserved_ip_ranges }}", + "scheduling": "{{ scheduling }}", + "service_account_name": "{{ service_account_name }}", + "worker_pool_specs": [ + { + "container_spec": { + "args": [], + "command": "{{ command }}", + "image_uri": "{{ image }}" + }, + "disk_spec": { + "boot_disk_size_gb": "{{ boot_disk_size_gb }}", + "boot_disk_type": "{{ boot_disk_type }}" + }, + "machine_spec": { + "accelerator_count": "{{ accelerator_count }}", + "accelerator_type": "{{ accelerator_type }}", + "machine_type": "{{ machine_type }}" + }, + "replica_count": 1 + } + ] + }, + "job_watch_poll_interval": "{{ job_watch_poll_interval }}" + }, + "variables": { + "description": "Default variables for the Vertex AI worker.\n\nThe schema for this class is used to populate the `variables` section of the default\nbase job template.", + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name given to infrastructure created by a worker.", + "title": "Name" + }, + "env": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", + "title": "Command" + }, + "region": { + "description": "The region where the Vertex AI Job resides.", + "examples": [ + "us-central1" + ], + "title": "Region", + "type": "string" + }, + "image": { + "description": "The URI of a container image in the Container or Artifact Registry, used to run your Vertex AI Job. Note that Vertex AI will need accessto the project and region where the container image is stored. See https://cloud.google.com/vertex-ai/docs/training/create-custom-container", + "examples": [ + "gcr.io/your-project/your-repo:latest" + ], + "title": "Image Name", + "type": "string" + }, + "credentials": { + "anyOf": [ + { + "$ref": "#/definitions/GcpCredentials" + }, + { + "type": "null" + } + ], + "description": "The GCP Credentials used to initiate the Vertex AI Job. If not provided credentials will be inferred from the local environment.", + "title": "GCP Credentials" + }, + "machine_type": { + "default": "n1-standard-4", + "description": "The machine type to use for the run, which controls the available CPU and memory. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", + "title": "Machine Type", + "type": "string" + }, + "accelerator_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The type of accelerator to attach to the machine. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", + "examples": [ + "NVIDIA_TESLA_K80" + ], + "title": "Accelerator Type" + }, + "accelerator_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The number of accelerators to attach to the machine. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", + "examples": [ + 1 + ], + "title": "Accelerator Count" + }, + "boot_disk_type": { + "default": "pd-ssd", + "description": "The type of boot disk to attach to the machine.", + "title": "Boot Disk Type", + "type": "string" + }, + "boot_disk_size_gb": { + "default": 100, + "description": "The size of the boot disk to attach to the machine, in gigabytes.", + "title": "Boot Disk Size (GB)", + "type": "integer" + }, + "maximum_run_time_hours": { + "default": 1, + "description": "The maximum job running time, in hours", + "title": "Maximum Run Time (Hours)", + "type": "integer" + }, + "network": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full name of the Compute Engine networkto which the Job should be peered. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network. For example: projects/12345/global/networks/myVPC", + "title": "Network" + }, + "reserved_ip_ranges": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network.", + "title": "Reserved IP Ranges" + }, + "scheduling": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A dictionary with scheduling options for a CustomJob, these are parameters related to queuing, and scheduling custom jobs. If unspecified default scheduling options are used. The 'maximum_run_time_hours' variable sets the job timeout field 'scheduling.timeout' for backward compatibility. See SDK: https://cloud.google.com/python/docs/reference/aiplatform/latest/google.cloud.aiplatform_v1.types.Scheduling See REST: https://cloud.google.com/vertex-ai/docs/reference/rest/v1/CustomJobSpec#Scheduling", + "examples": [ + { + "scheduling": { + "max_wait_duration": "1800s", + "strategy": "FLEX_START" + } + } + ], + "title": "Scheduling Options" + }, + "service_account_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specifies the service account to use as the run-as account in Vertex AI. The worker submitting jobs must have act-as permission on this run-as account. If unspecified, the AI Platform Custom Code Service Agent for the CustomJob's project is used. Takes precedence over the service account found in GCP credentials, and required if a service account cannot be detected in GCP credentials.", + "title": "Service Account Name" + }, + "enable_web_access": { + "default": false, + "description": "Whether you want Vertex AI to enable `interactive shell access` See https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell for how to access your job via interactive console when running.", + "examples": [ + true + ], + "title": "Enable Web Access", + "type": "boolean" + }, + "enable_dashboard_access": { + "default": false, + "description": "Whether to enable access to the customized dashboard in the training chief container. See https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell#get-uri for access instructions.", + "examples": [ + true + ], + "title": "Enable Dashboard Access", + "type": "boolean" + }, + "job_watch_poll_interval": { + "default": 5.0, + "description": "The amount of time to wait between GCP API calls while monitoring the state of a Vertex AI Job.", + "title": "Poll Interval (Seconds)", + "type": "number" + } + }, + "required": [ + "region", + "image" + ], + "type": "object", + "definitions": { + "GcpCredentials": { + "block_schema_references": {}, + "block_type_slug": "gcp-credentials", + "description": "Block used to manage authentication with GCP. Google authentication is\nhandled via the `google.oauth2` module or through the CLI.\nSpecify either one of service `account_file` or `service_account_info`; if both\nare not specified, the client will try to detect the credentials following Google's\n[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).\nSee Google's [Authentication documentation](https://cloud.google.com/docs/authentication#service-accounts)\nfor details on inference and recommended authentication patterns.", + "properties": { + "service_account_file": { + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the service account JSON keyfile.", + "title": "Service Account File" + }, + "service_account_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The contents of the keyfile as a dict.", + "title": "Service Account Info" + }, + "project": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP project to use for the client.", + "title": "Project" + } + }, + "secret_fields": [ + "service_account_info.*" + ], + "title": "GcpCredentials", + "type": "object" + } + } + } + }, + "description": "Execute flow runs within containers on Google Vertex AI. Requires a Google Cloud Platform account.", + "display_name": "Google Vertex AI", + "documentation_url": "https://docs.prefect.io/integrations/prefect-gcp", + "install_command": "pip install prefect-gcp", + "is_beta": false, + "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/10424e311932e31c477ac2b9ef3d53cefbaad708-250x250.png", + "type": "vertex-ai" + } + } +} \ No newline at end of file From af4b3ecd5a381391f0132af71afde5aec292043c Mon Sep 17 00:00:00 2001 From: nate nowack Date: Fri, 31 Oct 2025 13:07:47 -0500 Subject: [PATCH 42/42] Update aggregate worker metadata with `prefect-gcp` `v0.6.11` --- views/aggregate-worker-metadata.json | 880 ++++++++++++++++++++------- 1 file changed, 675 insertions(+), 205 deletions(-) diff --git a/views/aggregate-worker-metadata.json b/views/aggregate-worker-metadata.json index f9eb4b1fc..986a12954 100644 --- a/views/aggregate-worker-metadata.json +++ b/views/aggregate-worker-metadata.json @@ -1358,24 +1358,31 @@ "name": "{{ name }}", "region": "{{ region }}", "credentials": "{{ credentials }}", + "prefect_api_key_secret": "{{ prefect_api_key_secret }}", + "prefect_api_auth_string_secret": "{{ prefect_api_auth_string_secret }}", "job_body": { "apiVersion": "run.googleapis.com/v1", "kind": "Job", "metadata": { - "name": "{{ name }}", "annotations": { "run.googleapis.com/launch-stage": "BETA" - } + }, + "name": "{{ name }}" }, "spec": { "template": { + "metadata": { + "annotations": { + "run.googleapis.com/vpc-access-connector": "{{ vpc_connector_name }}" + } + }, "spec": { "template": { "spec": { "containers": [ { - "image": "{{ image }}", "command": "{{ command }}", + "image": "{{ image }}", "resources": { "limits": { "cpu": "{{ cpu }}", @@ -1388,15 +1395,10 @@ } } ], - "timeoutSeconds": "{{ timeout }}", - "serviceAccountName": "{{ service_account_name }}" + "serviceAccountName": "{{ service_account_name }}", + "timeoutSeconds": "{{ timeout }}" } } - }, - "metadata": { - "annotations": { - "run.googleapis.com/vpc-access-connector": "{{ vpc_connector_name }}" - } } } } @@ -1406,131 +1408,291 @@ }, "variables": { "description": "Default variables for the Cloud Run worker.\n\nThe schema for this class is used to populate the `variables` section of the default\nbase job template.", - "type": "object", "properties": { "name": { - "title": "Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Name given to infrastructure created by a worker.", - "type": "string" + "title": "Name" }, "env": { - "title": "Environment Variables", - "description": "Environment variables to set when starting a flow run.", - "type": "object", "additionalProperties": { - "type": "string" - } + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" }, "labels": { - "title": "Labels", - "description": "Labels applied to infrastructure created by a worker.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" }, "command": { - "title": "Command", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", - "type": "string" + "title": "Command" }, "region": { - "title": "Region", - "description": "The region where the Cloud Run Job resides.", "default": "us-central1", - "example": "us-central1", + "description": "The region where the Cloud Run Job resides.", + "examples": [ + "us-central1" + ], + "title": "Region", "type": "string" }, "credentials": { - "title": "GCP Credentials", - "description": "The GCP Credentials used to initiate the Cloud Run Job. If not provided credentials will be inferred from the local environment.", - "allOf": [ + "anyOf": [ { "$ref": "#/definitions/GcpCredentials" + }, + { + "type": "null" + } + ], + "description": "The GCP Credentials used to initiate the Cloud Run Job. If not provided credentials will be inferred from the local environment.", + "title": "GCP Credentials" + }, + "prefect_api_key_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "A GCP secret containing a Prefect API Key. This key will be used to authenticate Cloud Run tasks with Prefect Cloud. If not provided, the PREFECT_API_KEY environment variable will be used if the worker has one.", + "title": "Prefect API Key Secret" + }, + "prefect_api_auth_string_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A GCP secret containing a Prefect API authorization string. This string will be used to authenticate Cloud Run tasks with Prefect Cloud. If not provided, the PREFECT_API_AUTH_STRING environment variable will be used if the worker has one.", + "title": "Prefect API Auth String Secret" }, "image": { - "title": "Image Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The image to use for a new Cloud Run Job. If not set, the latest Prefect image will be used. See https://cloud.google.com/run/docs/deploying#images.", - "example": "docker.io/prefecthq/prefect:2-latest", - "type": "string" + "examples": [ + "docker.io/prefecthq/prefect:3-latest" + ], + "title": "Image Name" }, "cpu": { - "title": "CPU", + "anyOf": [ + { + "pattern": "^(\\d*000)m$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The amount of compute allocated to the Cloud Run Job. (1000m = 1 CPU). See https://cloud.google.com/run/docs/configuring/cpu#setting-jobs.", - "pattern": "^(\\d*000)m$", - "example": "1000m", - "type": "string" + "examples": [ + "1000m" + ], + "title": "CPU" }, "memory": { - "title": "Memory", + "anyOf": [ + { + "pattern": "^\\d+(?:G|Gi|M|Mi)$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The amount of memory allocated to the Cloud Run Job. Must be specified in units of 'G', 'Gi', 'M', or 'Mi'. See https://cloud.google.com/run/docs/configuring/memory-limits#setting.", - "pattern": "^\\d+(?:G|Gi|M|Mi)$", - "example": "512Mi", - "type": "string" + "examples": [ + "512Mi" + ], + "title": "Memory" }, "vpc_connector_name": { - "title": "VPC Connector Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The name of the VPC connector to use for the Cloud Run Job.", - "type": "string" + "title": "VPC Connector Name" }, "service_account_name": { - "title": "Service Account Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The name of the service account to use for the task execution of Cloud Run Job. By default Cloud Run jobs run as the default Compute Engine Service Account. ", - "example": "service-account@example.iam.gserviceaccount.com", - "type": "string" + "examples": [ + "service-account@example.iam.gserviceaccount.com" + ], + "title": "Service Account Name" }, "keep_job": { - "title": "Keep Job After Completion", - "description": "Keep the completed Cloud Run Job after it has run.", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], "default": false, - "type": "boolean" + "description": "Keep the completed Cloud Run Job after it has run.", + "title": "Keep Job After Completion" }, "timeout": { - "title": "Job Timeout", - "description": "The length of time that Prefect will wait for Cloud Run Job state changes.", + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 3600, + "type": "integer" + }, + { + "type": "null" + } + ], "default": 600, - "exclusiveMinimum": 0, - "maximum": 3600, - "type": "integer" + "description": "Max allowed duration the Job may be active before Cloud Run will actively try to mark it failed and kill associated containers (maximum of 3600 seconds, 1 hour).", + "title": "Job Timeout" } }, + "type": "object", "definitions": { "GcpCredentials": { - "title": "GcpCredentials", + "block_schema_references": {}, + "block_type_slug": "gcp-credentials", "description": "Block used to manage authentication with GCP. Google authentication is\nhandled via the `google.oauth2` module or through the CLI.\nSpecify either one of service `account_file` or `service_account_info`; if both\nare not specified, the client will try to detect the credentials following Google's\n[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).\nSee Google's [Authentication documentation](https://cloud.google.com/docs/authentication#service-accounts)\nfor details on inference and recommended authentication patterns.", - "type": "object", "properties": { "service_account_file": { - "title": "Service Account File", + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the service account JSON keyfile.", - "type": "string", - "format": "path" + "title": "Service Account File" }, "service_account_info": { - "title": "Service Account Info", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "The contents of the keyfile as a dict.", - "type": "object" + "title": "Service Account Info" }, "project": { - "title": "Project", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The GCP project to use for the client.", - "type": "string" + "title": "Project" } }, - "block_type_slug": "gcp-credentials", "secret_fields": [ "service_account_info.*" ], - "block_schema_references": {} + "title": "GcpCredentials", + "type": "object" + }, + "SecretKeySelector": { + "description": "SecretKeySelector is a data model for specifying a GCP secret to inject\ninto a Cloud Run V2 Job as an environment variable.\nFollows Cloud Run V2 rest API, docs:\nhttps://cloud.google.com/run/docs/reference/rest/v2/Container#SecretKeySelector", + "properties": { + "secret": { + "title": "Secret", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "secret", + "version" + ], + "title": "SecretKeySelector", + "type": "object" } } } }, "description": "Execute flow runs within containers on Google Cloud Run. Requires a Google Cloud Platform account.", "display_name": "Google Cloud Run", - "documentation_url": "https://prefecthq.github.io/prefect-gcp/cloud_run_worker/", + "documentation_url": "https://docs.prefect.io/integrations/prefect-gcp", "install_command": "pip install prefect-gcp", "is_beta": false, "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/10424e311932e31c477ac2b9ef3d53cefbaad708-250x250.png", @@ -1544,23 +1706,21 @@ "labels": "{{ labels }}", "name": "{{ name }}", "credentials": "{{ credentials }}", + "env_from_secrets": "{{ env_from_secrets }}", + "prefect_api_key_secret": "{{ prefect_api_key_secret }}", + "prefect_api_auth_string_secret": "{{ prefect_api_auth_string_secret }}", + "cloudsql_instances": "{{ cloudsql_instances }}", "job_body": { "client": "prefect", "launchStage": "{{ launch_stage }}", "template": { "template": { - "serviceAccount": "{{ service_account_name }}", - "maxRetries": "{{ max_retries }}", - "timeout": "{{ timeout }}", - "vpcAccess": { - "connector": "{{ vpc_connector_name }}" - }, "containers": [ { + "args": "{{ args }}", + "command": "{{ command }}", "env": [], "image": "{{ image }}", - "command": "{{ command }}", - "args": "{{ args }}", "resources": { "limits": { "cpu": "{{ cpu }}", @@ -1568,7 +1728,13 @@ } } } - ] + ], + "maxRetries": "{{ max_retries }}", + "serviceAccount": "{{ service_account_name }}", + "timeout": "{{ timeout }}", + "vpcAccess": { + "connector": "{{ vpc_connector_name }}" + } } } }, @@ -1577,74 +1743,170 @@ "timeout": "{{ timeout }}" }, "variables": { - "description": "Default variables for the Cloud Run worker V2.\n\nThe schema for this class is used to populate the `variables` section of the\ndefault base job template.", - "type": "object", + "description": "Default variables for the v2 Cloud Run worker.\n\nThe schema for this class is used to populate the `variables` section of the\ndefault base job template.", "properties": { "name": { - "title": "Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Name given to infrastructure created by a worker.", - "type": "string" + "title": "Name" }, "env": { - "title": "Environment Variables", - "description": "Environment variables to set when starting a flow run.", - "type": "object", "additionalProperties": { - "type": "string" - } + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" }, "labels": { - "title": "Labels", - "description": "Labels applied to infrastructure created by a worker.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" }, "command": { - "title": "Command", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", - "type": "string" + "title": "Command" }, "credentials": { - "title": "GCP Credentials", + "$ref": "#/definitions/GcpCredentials", "description": "The GCP Credentials used to connect to Cloud Run. If not provided credentials will be inferred from the local environment.", - "allOf": [ - { - "$ref": "#/definitions/GcpCredentials" - } - ] + "title": "GCP Credentials" }, "region": { - "title": "Region", - "description": "The region in which to run the Cloud Run job", "default": "us-central1", + "description": "The region in which to run the Cloud Run job", + "title": "Region", "type": "string" }, "image": { - "title": "Image Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "prefecthq/prefect:3-latest", "description": "The image to use for the Cloud Run job. If not provided the default Prefect image will be used.", - "default": "prefecthq/prefect:2-latest", - "type": "string" + "title": "Image Name" }, "args": { - "title": "Args", "description": "The arguments to pass to the Cloud Run Job V2's entrypoint command.", - "type": "array", "items": { "type": "string" - } + }, + "title": "Args", + "type": "array" + }, + "env_from_secrets": { + "additionalProperties": { + "$ref": "#/definitions/SecretKeySelector" + }, + "description": "Environment variables to set from GCP secrets when starting a flow run.", + "examples": [ + { + "ENV_VAR_NAME": { + "secret": "SECRET_NAME", + "version": "latest" + } + } + ], + "title": "Environment Variables from Secrets", + "type": "object" + }, + "prefect_api_key_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP secret to use for the Prefect API key. When provided, the secret will be used instead of the PREFECT_API_KEY environment variable.", + "examples": [ + { + "secret": "prefect-api-key", + "version": "latest" + } + ], + "title": "Prefect API Key Secret" + }, + "prefect_api_auth_string_secret": { + "anyOf": [ + { + "$ref": "#/definitions/SecretKeySelector" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The GCP secret to use for the Prefect API auth string. When provided, the secret will be used instead of the PREFECT_API_AUTH_STRING environment variable.", + "examples": [ + { + "secret": "prefect-api-auth-string", + "version": "latest" + } + ], + "title": "Prefect API Auth String Secret" + }, + "cloudsql_instances": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "List of Cloud SQL instance connection names to connect to. Format: {project}:{location}:{instance}", + "examples": [ + "project:region:instance-id" + ], + "title": "Cloud SQL Instances" }, "keep_job": { - "title": "Keep Job After Completion", - "description": "Keep the completed Cloud run job on Google Cloud Platform.", "default": false, + "description": "Keep the completed Cloud run job on Google Cloud Platform.", + "title": "Keep Job After Completion", "type": "boolean" }, "launch_stage": { - "title": "Launch Stage", - "description": "The launch stage of the Cloud Run Job V2. See https://cloud.google.com/run/docs/about-features-categories for additional details.", "default": "BETA", + "description": "The launch stage of the Cloud Run Job V2. See https://cloud.google.com/run/docs/about-features-categories for additional details.", "enum": [ "ALPHA", "BETA", @@ -1655,83 +1917,149 @@ "UNIMPLEMENTED", "LAUNCH_TAG_UNSPECIFIED" ], + "title": "Launch Stage", "type": "string" }, "max_retries": { - "title": "Max Retries", - "description": "The number of times to retry the Cloud Run job.", "default": 0, + "description": "The number of times to retry the Cloud Run job.", + "title": "Max Retries", "type": "integer" }, "cpu": { - "title": "CPU", - "description": "The CPU to allocate to the Cloud Run job.", "default": "1000m", + "description": "The CPU to allocate to the Cloud Run job.", + "title": "CPU", "type": "string" }, "memory": { - "title": "Memory", - "description": "The memory to allocate to the Cloud Run job along with the units, whichcould be: G, Gi, M, Mi.", "default": "512Mi", - "example": "512Mi", + "description": "The memory to allocate to the Cloud Run job along with the units, whichcould be: G, Gi, M, Mi.", + "examples": [ + "512Mi" + ], "pattern": "^\\d+(?:G|Gi|M|Mi)$", + "title": "Memory", "type": "string" }, "timeout": { - "title": "Job Timeout", - "description": "The length of time that Prefect will wait for a Cloud Run Job to complete before raising an exception (maximum of 86400 seconds, 1 day).", "default": 600, + "description": "Max allowed time duration the Job may be active before Cloud Run will actively try to mark it failed and kill associated containers (maximum of 86400 seconds, 1 day).", "exclusiveMinimum": 0, "maximum": 86400, + "title": "Job Timeout", "type": "integer" }, "vpc_connector_name": { - "title": "VPC Connector Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The name of the VPC connector to use for the Cloud Run job.", - "type": "string" + "title": "VPC Connector Name" }, "service_account_name": { - "title": "Service Account Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The name of the service account to use for the task execution of Cloud Run Job. By default Cloud Run jobs run as the default Compute Engine Service Account.", - "example": "service-account@example.iam.gserviceaccount.com", - "type": "string" + "examples": [ + "service-account@example.iam.gserviceaccount.com" + ], + "title": "Service Account Name" } }, + "type": "object", "definitions": { "GcpCredentials": { - "title": "GcpCredentials", + "block_schema_references": {}, + "block_type_slug": "gcp-credentials", "description": "Block used to manage authentication with GCP. Google authentication is\nhandled via the `google.oauth2` module or through the CLI.\nSpecify either one of service `account_file` or `service_account_info`; if both\nare not specified, the client will try to detect the credentials following Google's\n[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).\nSee Google's [Authentication documentation](https://cloud.google.com/docs/authentication#service-accounts)\nfor details on inference and recommended authentication patterns.", - "type": "object", "properties": { "service_account_file": { - "title": "Service Account File", + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the service account JSON keyfile.", - "type": "string", - "format": "path" + "title": "Service Account File" }, "service_account_info": { - "title": "Service Account Info", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "The contents of the keyfile as a dict.", - "type": "object" + "title": "Service Account Info" }, "project": { - "title": "Project", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The GCP project to use for the client.", - "type": "string" + "title": "Project" } }, - "block_type_slug": "gcp-credentials", "secret_fields": [ "service_account_info.*" ], - "block_schema_references": {} + "title": "GcpCredentials", + "type": "object" + }, + "SecretKeySelector": { + "description": "SecretKeySelector is a data model for specifying a GCP secret to inject\ninto a Cloud Run V2 Job as an environment variable.\nFollows Cloud Run V2 rest API, docs:\nhttps://cloud.google.com/run/docs/reference/rest/v2/Container#SecretKeySelector", + "properties": { + "secret": { + "title": "Secret", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "secret", + "version" + ], + "title": "SecretKeySelector", + "type": "object" } } } }, "description": "Execute flow runs within containers on Google Cloud Run (V2 API). Requires a Google Cloud Platform account.", "display_name": "Google Cloud Run V2", - "documentation_url": "https://prefecthq.github.io/prefect-gcp/worker_v2/", + "documentation_url": "https://docs.prefect.io/integrations/prefect-gcp", "install_command": "pip install prefect-gcp", "is_beta": false, "logo_url": "https://images.ctfassets.net/gm98wzqotmnx/4SpnOBvMYkHp6z939MDKP6/549a91bc1ce9afd4fb12c68db7b68106/social-icon-google-cloud-1200-630.png?h=250", @@ -1747,27 +2075,30 @@ "region": "{{ region }}", "credentials": "{{ credentials }}", "job_spec": { - "service_account_name": "{{ service_account_name }}", + "enable_dashboard_access": "{{ enable_dashboard_access }}", + "enable_web_access": "{{ enable_web_access }}", + "maximum_run_time_hours": "{{ maximum_run_time_hours }}", "network": "{{ network }}", "reserved_ip_ranges": "{{ reserved_ip_ranges }}", - "maximum_run_time_hours": "{{ maximum_run_time_hours }}", + "scheduling": "{{ scheduling }}", + "service_account_name": "{{ service_account_name }}", "worker_pool_specs": [ { - "replica_count": 1, "container_spec": { - "image_uri": "{{ image }}", + "args": [], "command": "{{ command }}", - "args": [] + "image_uri": "{{ image }}" + }, + "disk_spec": { + "boot_disk_size_gb": "{{ boot_disk_size_gb }}", + "boot_disk_type": "{{ boot_disk_type }}" }, "machine_spec": { - "machine_type": "{{ machine_type }}", + "accelerator_count": "{{ accelerator_count }}", "accelerator_type": "{{ accelerator_type }}", - "accelerator_count": "{{ accelerator_count }}" + "machine_type": "{{ machine_type }}" }, - "disk_spec": { - "boot_disk_type": "{{ boot_disk_type }}", - "boot_disk_size_gb": "{{ boot_disk_size_gb }}" - } + "replica_count": 1 } ] }, @@ -1775,113 +2106,226 @@ }, "variables": { "description": "Default variables for the Vertex AI worker.\n\nThe schema for this class is used to populate the `variables` section of the default\nbase job template.", - "type": "object", "properties": { "name": { - "title": "Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Name given to infrastructure created by a worker.", - "type": "string" + "title": "Name" }, "env": { - "title": "Environment Variables", - "description": "Environment variables to set when starting a flow run.", - "type": "object", "additionalProperties": { - "type": "string" - } + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": "Environment variables to set when starting a flow run.", + "title": "Environment Variables", + "type": "object" }, "labels": { - "title": "Labels", - "description": "Labels applied to infrastructure created by a worker.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Labels applied to infrastructure created by a worker.", + "title": "Labels", + "type": "object" }, "command": { - "title": "Command", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The command to use when starting a flow run. In most cases, this should be left blank and the command will be automatically generated by the worker.", - "type": "string" + "title": "Command" }, "region": { - "title": "Region", "description": "The region where the Vertex AI Job resides.", - "example": "us-central1", + "examples": [ + "us-central1" + ], + "title": "Region", "type": "string" }, "image": { - "title": "Image Name", "description": "The URI of a container image in the Container or Artifact Registry, used to run your Vertex AI Job. Note that Vertex AI will need accessto the project and region where the container image is stored. See https://cloud.google.com/vertex-ai/docs/training/create-custom-container", - "example": "gcr.io/your-project/your-repo:latest", + "examples": [ + "gcr.io/your-project/your-repo:latest" + ], + "title": "Image Name", "type": "string" }, "credentials": { - "title": "GCP Credentials", - "description": "The GCP Credentials used to initiate the Vertex AI Job. If not provided credentials will be inferred from the local environment.", - "allOf": [ + "anyOf": [ { "$ref": "#/definitions/GcpCredentials" + }, + { + "type": "null" } - ] + ], + "description": "The GCP Credentials used to initiate the Vertex AI Job. If not provided credentials will be inferred from the local environment.", + "title": "GCP Credentials" }, "machine_type": { - "title": "Machine Type", - "description": "The machine type to use for the run, which controls the available CPU and memory. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", "default": "n1-standard-4", + "description": "The machine type to use for the run, which controls the available CPU and memory. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", + "title": "Machine Type", "type": "string" }, "accelerator_type": { - "title": "Accelerator Type", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The type of accelerator to attach to the machine. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", - "example": "NVIDIA_TESLA_K80", - "type": "string" + "examples": [ + "NVIDIA_TESLA_K80" + ], + "title": "Accelerator Type" }, "accelerator_count": { - "title": "Accelerator Count", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, "description": "The number of accelerators to attach to the machine. See https://cloud.google.com/vertex-ai/docs/reference/rest/v1/MachineSpec", - "example": 1, - "type": "integer" + "examples": [ + 1 + ], + "title": "Accelerator Count" }, "boot_disk_type": { - "title": "Boot Disk Type", - "description": "The type of boot disk to attach to the machine.", "default": "pd-ssd", + "description": "The type of boot disk to attach to the machine.", + "title": "Boot Disk Type", "type": "string" }, "boot_disk_size_gb": { - "title": "Boot Disk Size (GB)", - "description": "The size of the boot disk to attach to the machine, in gigabytes.", "default": 100, + "description": "The size of the boot disk to attach to the machine, in gigabytes.", + "title": "Boot Disk Size (GB)", "type": "integer" }, "maximum_run_time_hours": { - "title": "Maximum Run Time (Hours)", - "description": "The maximum job running time, in hours", "default": 1, + "description": "The maximum job running time, in hours", + "title": "Maximum Run Time (Hours)", "type": "integer" }, "network": { - "title": "Network", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The full name of the Compute Engine networkto which the Job should be peered. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network. For example: projects/12345/global/networks/myVPC", - "type": "string" + "title": "Network" }, "reserved_ip_ranges": { - "title": "Reserved IP Ranges", + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network.", - "type": "array", - "items": { - "type": "string" - } + "title": "Reserved IP Ranges" + }, + "scheduling": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A dictionary with scheduling options for a CustomJob, these are parameters related to queuing, and scheduling custom jobs. If unspecified default scheduling options are used. The 'maximum_run_time_hours' variable sets the job timeout field 'scheduling.timeout' for backward compatibility. See SDK: https://cloud.google.com/python/docs/reference/aiplatform/latest/google.cloud.aiplatform_v1.types.Scheduling See REST: https://cloud.google.com/vertex-ai/docs/reference/rest/v1/CustomJobSpec#Scheduling", + "examples": [ + { + "scheduling": { + "max_wait_duration": "1800s", + "strategy": "FLEX_START" + } + } + ], + "title": "Scheduling Options" }, "service_account_name": { - "title": "Service Account Name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Specifies the service account to use as the run-as account in Vertex AI. The worker submitting jobs must have act-as permission on this run-as account. If unspecified, the AI Platform Custom Code Service Agent for the CustomJob's project is used. Takes precedence over the service account found in GCP credentials, and required if a service account cannot be detected in GCP credentials.", - "type": "string" + "title": "Service Account Name" + }, + "enable_web_access": { + "default": false, + "description": "Whether you want Vertex AI to enable `interactive shell access` See https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell for how to access your job via interactive console when running.", + "examples": [ + true + ], + "title": "Enable Web Access", + "type": "boolean" + }, + "enable_dashboard_access": { + "default": false, + "description": "Whether to enable access to the customized dashboard in the training chief container. See https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell#get-uri for access instructions.", + "examples": [ + true + ], + "title": "Enable Dashboard Access", + "type": "boolean" }, "job_watch_poll_interval": { - "title": "Poll Interval (Seconds)", - "description": "The amount of time to wait between GCP API calls while monitoring the state of a Vertex AI Job.", "default": 5.0, + "description": "The amount of time to wait between GCP API calls while monitoring the state of a Vertex AI Job.", + "title": "Poll Interval (Seconds)", "type": "number" } }, @@ -1889,41 +2333,67 @@ "region", "image" ], + "type": "object", "definitions": { "GcpCredentials": { - "title": "GcpCredentials", + "block_schema_references": {}, + "block_type_slug": "gcp-credentials", "description": "Block used to manage authentication with GCP. Google authentication is\nhandled via the `google.oauth2` module or through the CLI.\nSpecify either one of service `account_file` or `service_account_info`; if both\nare not specified, the client will try to detect the credentials following Google's\n[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).\nSee Google's [Authentication documentation](https://cloud.google.com/docs/authentication#service-accounts)\nfor details on inference and recommended authentication patterns.", - "type": "object", "properties": { "service_account_file": { - "title": "Service Account File", + "anyOf": [ + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "Path to the service account JSON keyfile.", - "type": "string", - "format": "path" + "title": "Service Account File" }, "service_account_info": { - "title": "Service Account Info", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, "description": "The contents of the keyfile as a dict.", - "type": "object" + "title": "Service Account Info" }, "project": { - "title": "Project", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, "description": "The GCP project to use for the client.", - "type": "string" + "title": "Project" } }, - "block_type_slug": "gcp-credentials", "secret_fields": [ "service_account_info.*" ], - "block_schema_references": {} + "title": "GcpCredentials", + "type": "object" } } } }, "description": "Execute flow runs within containers on Google Vertex AI. Requires a Google Cloud Platform account.", "display_name": "Google Vertex AI", - "documentation_url": "https://prefecthq.github.io/prefect-gcp/vertex_worker/", + "documentation_url": "https://docs.prefect.io/integrations/prefect-gcp", "install_command": "pip install prefect-gcp", "is_beta": false, "logo_url": "https://cdn.sanity.io/images/3ugk85nk/production/10424e311932e31c477ac2b9ef3d53cefbaad708-250x250.png",