diff --git a/custom-words.txt b/custom-words.txt index 6ba0e9d0882e..5b0b0fdde383 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -2759,4 +2759,4 @@ logalertv1numresult logalertv1metricmeasurement resourcehealth activitylog -budget +budget \ No newline at end of file diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/CommonDefinitions.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/CommonDefinitions.json index 56b0255a21d5..47a4acd133bb 100644 --- a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/CommonDefinitions.json +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/CommonDefinitions.json @@ -1063,6 +1063,42 @@ "readOnly": true } } + }, + "JobTemplate": { + "description": "Container Apps Job versioned application definition. Defines the desired state of an immutable revision. Any changes to this section Will result in a new revision being created", + "type": "object", + "properties": { + "initContainers": { + "description": "List of specialized containers that run before app containers.", + "type": "array", + "items": { + "$ref": "#/definitions/InitContainer" + }, + "x-ms-identifiers": [ + "name" + ] + }, + "containers": { + "description": "List of container definitions for the Container App.", + "type": "array", + "items": { + "$ref": "#/definitions/Container" + }, + "x-ms-identifiers": [ + "name" + ] + }, + "volumes": { + "description": "List of volume definitions for the Container App.", + "type": "array", + "items": { + "$ref": "#/definitions/Volume" + }, + "x-ms-identifiers": [ + "name" + ] + } + } } }, "securityDefinitions": { diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/Jobs.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/Jobs.json new file mode 100644 index 000000000000..6d4599c88606 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/Jobs.json @@ -0,0 +1,781 @@ +{ + "swagger": "2.0", + "info": { + "version": "2022-11-01-preview", + "title": "ContainerApps API Client" + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/subscriptions/{subscriptionId}/providers/Microsoft.App/jobs": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get the Container Apps Jobs in a given subscription.", + "operationId": "Jobs_ListBySubscription", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/JobsCollection" + } + }, + "default": { + "description": "Error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "List Container Apps Jobs by subscription": { + "$ref": "./examples/Jobs_ListBySubscription.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/jobs": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get the Container Apps Jobs in a given resource group.", + "operationId": "Jobs_ListByResourceGroup", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/JobsCollection" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "List Container Apps Jobs by resource group": { + "$ref": "./examples/Jobs_ListByResourceGroup.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/jobs/{jobName}": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get the properties of a Container Apps Job.", + "operationId": "Job_Get", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string", + "pattern": "^[-\\w\\._\\(\\)]+$" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK.", + "schema": { + "$ref": "#/definitions/Job" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Container Apps Job": { + "$ref": "./examples/Job_Get.json" + } + } + }, + "put": { + "tags": [ + "Jobs" + ], + "summary": "Create or Update a Container Apps Job.", + "description": "Create or Update a Container Apps Job.", + "operationId": "Job_CreateOrUpdate", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string" + }, + { + "name": "JobEnvelope", + "in": "body", + "description": "Properties used to create a container apps job", + "required": true, + "schema": { + "$ref": "#/definitions/Job" + } + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "201": { + "description": "Container Apps Job create has been started.", + "schema": { + "$ref": "#/definitions/Job" + } + }, + "200": { + "description": "No change performed on the Container Apps Job.", + "schema": { + "$ref": "#/definitions/Job" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or Update Container Apps Job": { + "$ref": "./examples/Job_CreateorUpdate.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + } + }, + "delete": { + "tags": [ + "Jobs" + ], + "summary": "Delete a Container Apps Job.", + "description": "Delete a Container Apps Job.", + "operationId": "Job_Delete", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Container Apps Job deleted successfully." + }, + "202": { + "description": "Delete operation is in progress.", + "headers": { + "Location": { + "type": "string" + } + } + }, + "204": { + "description": "Container Apps Job does not exist." + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete Container Apps Job": { + "$ref": "./examples/Job_Delete.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } + }, + "patch": { + "tags": [ + "Jobs" + ], + "summary": "Update properties of a Container Apps Job", + "description": "Patches a Container Apps Job using JSON Merge Patch", + "operationId": "Job_Update", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string" + }, + { + "name": "JobEnvelope", + "in": "body", + "required": true, + "description": "Properties used to create a container apps job", + "schema": { + "$ref": "#/definitions/JobPatchProperties" + } + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Ok", + "schema": { + "$ref": "#/definitions/Job" + } + }, + "202": { + "description": "Patch operation is in progress.", + "headers": { + "Location": { + "type": "string" + } + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Patch Container Apps Job": { + "$ref": "./examples/Job_Patch.json" + } + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/jobs/{jobName}/start": { + "post": { + "tags": [ + "Jobs" + ], + "summary": "Runs a Container Apps Job", + "operationId": "Job_run", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string", + "pattern": "^[-\\w\\._\\(\\)]+$" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Container Apps Jobs started successfully." + }, + "202": { + "description": "OK", + "headers": { + "Location": { + "type": "string" + } + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Run a Container Apps Job": { + "$ref": "./examples/Job_Start.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/jobs/{jobName}/stop": { + "post": { + "tags": [ + "Jobs" + ], + "summary": "Terminates execution of a running container apps job", + "operationId": "Job_terminate", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string", + "pattern": "^[-\\w\\._\\(\\)]+$" + } + ], + "responses": { + "200": { + "description": "Container Apps Jobs terminated successfully." + }, + "202": { + "description": "OK", + "headers": { + "Location": { + "type": "string" + } + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Terminate a Container Apps Job": { + "$ref": "./examples/Job_Stop.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/jobs/{jobName}/listSecrets": { + "post": { + "tags": [ + "Jobs" + ], + "summary": "List secrets for a container apps job", + "operationId": "Jobs_ListSecrets", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "name": "jobName", + "in": "path", + "description": "Name of the Container Apps Job.", + "required": true, + "type": "string", + "pattern": "^[-\\w\\._\\(\\)]+$" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/JobSecretsCollection" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "$ref": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "List Container Apps Job Secrets": { + "$ref": "./examples/Job_ListSecrets.json" + } + } + } + } + }, + "definitions": { + "JobConfiguration": { + "description": "Non versioned Container Apps Job configuration properties", + "type": "object", + "required": [ + "replicaTimeout", + "triggerType" + ], + "properties": { + "secrets": { + "description": "Collection of secrets used by a Container app", + "type": "array", + "items": { + "$ref": "./CommonDefinitions.json#/definitions/Secret" + }, + "x-ms-identifiers": [ + "name" + ] + }, + "triggerType": { + "description": "Trigger type of the job", + "enum": [ + "Scheduled", + "Event", + "Manual" + ], + "type": "string", + "default": "Manual", + "x-ms-enum": { + "name": "TriggerType", + "modelAsString": true + } + }, + "replicaTimeout": { + "description": "Maximum number of seconds a replica is allowed to run.", + "format": "int32", + "type": "integer" + }, + "replicaRetryLimit": { + "format": "int32", + "description": "Maximum number of retries before failing the job.", + "type": "integer" + }, + "manualTriggerConfig": { + "type": "object", + "description": "Manual trigger configuration for a single execution job. Properties replicaCompletionCount and parallelism would be set to 1 by default", + "properties": { + "replicaCompletionCount": { + "$ref": "#/definitions/ReplicaCompletionCount" + }, + "parallelism": { + "$ref": "#/definitions/Parallelism" + } + } + }, + "scheduleTriggerConfig": { + "description": "Cron formatted repeating trigger schedule (\"* * * * *\") for cronjobs. Properties completions and parallelism would be set to 1 by default", + "required": [ + "cronExpression" + ], + "type": "object", + "properties": { + "replicaCompletionCount": { + "$ref": "#/definitions/ReplicaCompletionCount" + }, + "cronExpression": { + "description": "Cron formatted repeating schedule (\"* * * * *\") of a Cron Job.", + "type": "string" + }, + "parallelism": { + "$ref": "#/definitions/Parallelism" + } + } + }, + "registries": { + "description": "Collection of private container registry credentials used by a Container apps job", + "type": "array", + "items": { + "$ref": "#/definitions/RegistryCredentials" + }, + "x-ms-identifiers": [ + "server" + ] + } + } + }, + "Job": { + "type": "object", + "description": "Container App Job", + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/TrackedResource" + } + ], + "properties": { + "extendedLocation": { + "$ref": "./CommonDefinitions.json#/definitions/ExtendedLocation" + }, + "identity": { + "description": "Managed identities needed by a container app job to interact with other Azure services to not maintain any secrets or credentials in code.", + "$ref": "../../../../../common-types/resource-management/v3/managedidentity.json#/definitions/ManagedServiceIdentity" + }, + "properties": { + "description": "ContainerApp resource specific properties.", + "type": "object", + "properties": { + "provisioningState": { + "description": "Provisioning state of the Container Apps Job.", + "enum": [ + "InProgress", + "Succeeded", + "Failed", + "Canceled", + "Deleting" + ], + "type": "string", + "readOnly": true, + "x-ms-enum": { + "name": "JobProvisioningState", + "modelAsString": true + } + }, + "environmentId": { + "description": "Resource ID of environment.", + "type": "string", + "x-ms-mutability": [ + "create", + "read" + ] + }, + "configuration": { + "$ref": "#/definitions/JobConfiguration", + "description": "Container Apps Job configuration properties." + }, + "template": { + "$ref": "./CommonDefinitions.json#/definitions/JobTemplate", + "description": "Container Apps job definition." + }, + "outboundIpAddresses": { + "description": "Outbound IP Addresses of a container apps job.", + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true + }, + "eventStreamEndpoint": { + "description": "The endpoint of the eventstream of the container apps job.", + "type": "string", + "readOnly": true + } + }, + "x-ms-client-flatten": true + } + }, + "required": [] + }, + "JobPatchProperties": { + "type": "object", + "description": "ContainerApp resource specific properties.", + "properties": { + "identity": { + "description": "Managed identities needed by a container app job to interact with other Azure services to not maintain any secrets or credentials in code.", + "$ref": "../../../../../common-types/resource-management/v3/managedidentity.json#/definitions/ManagedServiceIdentity" + }, + "properties": { + "type": "object", + "properties": { + "environmentId": { + "description": "Resource ID of environment.", + "type": "string", + "x-ms-mutability": [ + "create", + "read", + "update" + ] + }, + "configuration": { + "$ref": "#/definitions/JobConfiguration", + "description": "Container Apps Job configuration properties." + }, + "template": { + "$ref": "./CommonDefinitions.json#/definitions/JobTemplate", + "description": "Container Apps job definition." + }, + "outboundIpAddresses": { + "description": "Outbound IP Addresses of a container apps job.", + "type": "array", + "items": { + "type": "string" + } + }, + "eventStreamEndpoint": { + "description": "The endpoint of the eventstream of the container apps job.", + "type": "string" + } + } + } + } + }, + "JobsCollection": { + "description": "Container Apps Jobs collection ARM resource.", + "required": [ + "value" + ], + "type": "object", + "properties": { + "value": { + "description": "Collection of resources.", + "type": "array", + "items": { + "$ref": "#/definitions/Job" + } + }, + "nextLink": { + "description": "Link to next page of resources.", + "type": "string", + "readOnly": true + } + } + }, + "RegistryCredentials": { + "description": "Container App Private Registry", + "type": "object", + "properties": { + "server": { + "description": "Container Registry Server", + "type": "string" + }, + "username": { + "description": "Container Registry Username", + "type": "string" + }, + "passwordSecretRef": { + "description": "The name of the Secret that contains the registry login password", + "type": "string" + }, + "identity": { + "description": "A Managed Identity to use to authenticate with Azure Container Registry. For user-assigned identities, use the full user-assigned identity Resource ID. For system-assigned identities, use 'system'", + "type": "string" + } + } + }, + "JobSecretsCollection": { + "description": "Container Apps Job Secrets Collection ARM resource.", + "required": [ + "value" + ], + "type": "object", + "properties": { + "value": { + "description": "Collection of resources.", + "type": "array", + "items": { + "$ref": "./CommonDefinitions.json#/definitions/Secret" + }, + "x-ms-identifiers": [ + "name" + ] + } + } + }, + "ReplicaCompletionCount": { + "description": "Minimum number of successful replica completions before overall job completion.", + "format": "int32", + "type": "integer" + }, + "Parallelism": { + "description": "Number of parallel replicas of a job that can run at a given time.", + "format": "int32", + "type": "integer" + } + }, + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ] +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_CreateorUpdate.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_CreateorUpdate.json new file mode 100644 index 000000000000..459422f7ebcf --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_CreateorUpdate.json @@ -0,0 +1,207 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testcontainerAppsJob0", + "api-version": "2022-11-01-preview", + "JobEnvelope": { + "location": "East US", + "properties": { + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v1", + "name": "testcontainerAppsJob0", + "probes": [ + { + "type": "Liveness", + "httpGet": { + "path": "/health", + "port": 8080, + "httpHeaders": [ + { + "name": "Custom-Header", + "value": "Awesome" + } + ] + }, + "initialDelaySeconds": 5, + "periodSeconds": 3 + } + ] + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + }, + "command": [ + "/bin/sh" + ], + "args": [ + "-c", + "while true; do echo hello; sleep 10;done" + ] + } + ] + } + } + } + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob0", + "name": "testcontainerAppsJob0", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "InProgress", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + }, + "probes": [ + { + "type": "Liveness", + "httpGet": { + "path": "/health", + "port": 8080, + "httpHeaders": [ + { + "name": "Custom-Header", + "value": "Awesome" + } + ] + }, + "initialDelaySeconds": 3, + "periodSeconds": 3 + } + ] + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + }, + "command": [ + "/bin/sh" + ], + "args": [ + "-c", + "while true; do echo hello; sleep 10;done" + ] + } + ] + }, + "eventStreamEndpoint": "testEndpoint" + } + } + }, + "201": { + "headers": { + "Location": "location" + }, + "body": { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob0", + "name": "testcontainerAppsJob0", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "InProgress", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + }, + "probes": [ + { + "type": "Liveness", + "httpGet": { + "path": "/health", + "port": 8080, + "httpHeaders": [ + { + "name": "Custom-Header", + "value": "Awesome" + } + ] + }, + "initialDelaySeconds": 3, + "periodSeconds": 3 + } + ] + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + }, + "command": [ + "/bin/sh" + ], + "args": [ + "-c", + "while true; do echo hello; sleep 10;done" + ] + } + ] + }, + "eventStreamEndpoint": "testEndpoint" + } + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Delete.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Delete.json new file mode 100644 index 000000000000..d76142bcc5b2 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Delete.json @@ -0,0 +1,17 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testWorkerContainerAppsJob0", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/providers/Microsoft.App/jobs/testWorkerContainerAppsJob0/operationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2022-11-01-preview" + } + }, + "204": {} + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Get.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Get.json new file mode 100644 index 000000000000..cb69b4ddedca --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Get.json @@ -0,0 +1,54 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testcontainerAppsJob0", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob0", + "name": "testcontainerAppsJob0", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "Succeeded", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ] + } + } + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_ListSecrets.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_ListSecrets.json new file mode 100644 index 000000000000..a438568bb9c6 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_ListSecrets.json @@ -0,0 +1,23 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testcontainerAppsJob0", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "value": [ + { + "name": "secret1" + }, + { + "name": "secret2" + } + ] + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Patch.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Patch.json new file mode 100644 index 000000000000..c27b18092e94 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Patch.json @@ -0,0 +1,114 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testcontainerAppsJob0", + "api-version": "2022-11-01-preview", + "JobEnvelope": { + "properties": { + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v1", + "name": "testcontainerAppsJob0", + "probes": [ + { + "type": "Liveness", + "httpGet": { + "path": "/health", + "port": 8080, + "httpHeaders": [ + { + "name": "Custom-Header", + "value": "Awesome" + } + ] + }, + "initialDelaySeconds": 3, + "periodSeconds": 3 + } + ] + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + }, + "command": [ + "/bin/sh" + ], + "args": [ + "-c", + "while true; do echo hello; sleep 10;done" + ] + } + ] + } + } + } + }, + "responses": { + "202": { + "headers": { + "azure-asyncoperation": "https://management.azure.com/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/providers/Microsoft.App/locations/eastus/containerappsjobOperationResults/62e4d893-d233-4005-988e-a428d9f77076?api-version=2022-11-01-preview" + } + }, + "200": { + "headers": {}, + "body": { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob0", + "name": "testcontainerAppsJob0", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "Succeeded", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ] + } + } + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Start.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Start.json new file mode 100644 index 000000000000..2225ce0be221 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Start.json @@ -0,0 +1,16 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testcontainerAppsJob0", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "Location": "location" + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Stop.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Stop.json new file mode 100644 index 000000000000..2225ce0be221 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Job_Stop.json @@ -0,0 +1,16 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "jobName": "testcontainerAppsJob0", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "Location": "location" + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Jobs_ListByResourceGroup.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Jobs_ListByResourceGroup.json new file mode 100644 index 000000000000..73e96466936d --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Jobs_ListByResourceGroup.json @@ -0,0 +1,100 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "resourceGroupName": "rg", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "value": [ + { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob0", + "name": "testcontainerAppsJob0", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "Succeeded", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ] + } + } + }, + { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob1", + "name": "testcontainerAppsJob1", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "Succeeded", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "scheduleTriggerConfig": { + "replicaCompletionCount": 1, + "cronExpression": "* * * * 5", + "parallelism": 4 + }, + "triggerType": "Scheduled" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob1:v4", + "name": "testcontainerApp0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ], + "initContainers": [ + { + "image": "repo/testinitcontainerAppsJob1:v4", + "name": "testinitcontainerApp0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ] + } + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Jobs_ListBySubscription.json b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Jobs_ListBySubscription.json new file mode 100644 index 000000000000..f8f58b8e5815 --- /dev/null +++ b/specification/app/resource-manager/Microsoft.App/preview/2022-11-01-preview/examples/Jobs_ListBySubscription.json @@ -0,0 +1,99 @@ +{ + "parameters": { + "subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345", + "api-version": "2022-11-01-preview" + }, + "responses": { + "200": { + "headers": {}, + "body": { + "value": [ + { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob0", + "name": "testcontainerAppsJob0", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "Succeeded", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "manualTriggerConfig": { + "replicaCompletionCount": 1, + "parallelism": 4 + }, + "triggerType": "Manual" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob0:v4", + "name": "testinitcontainerAppsJob0", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ] + } + } + }, + { + "id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/jobs/testcontainerAppsJob1", + "name": "testcontainerAppsJob1", + "type": "Microsoft.App/jobs", + "location": "East US", + "properties": { + "provisioningState": "Succeeded", + "environmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube", + "configuration": { + "replicaTimeout": 10, + "replicaRetryLimit": 10, + "scheduleTriggerConfig": { + "replicaCompletionCount": 1, + "cronExpression": "* * * * 5", + "parallelism": 5 + }, + "triggerType": "Scheduled" + }, + "template": { + "containers": [ + { + "image": "repo/testcontainerAppsJob1:v4", + "name": "testcontainerAppsJob1", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ], + "initContainers": [ + { + "image": "repo/testcontainerAppsJob1:v4", + "name": "testinitcontainerAppsJob1", + "resources": { + "cpu": 0.2, + "memory": "100Mi" + } + } + ] + } + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/app/resource-manager/readme.md b/specification/app/resource-manager/readme.md index 666cde81a250..47a8afb4562d 100644 --- a/specification/app/resource-manager/readme.md +++ b/specification/app/resource-manager/readme.md @@ -45,6 +45,7 @@ input-file: - Microsoft.App/preview/2022-11-01-preview/ConnectedEnvironmentsDaprComponents.json - Microsoft.App/preview/2022-11-01-preview/ConnectedEnvironmentsStorages.json - Microsoft.App/preview/2022-11-01-preview/ContainerApps.json + - Microsoft.App/preview/2022-11-01-preview/Jobs.json - Microsoft.App/preview/2022-11-01-preview/ContainerAppsRevisions.json - Microsoft.App/preview/2022-11-01-preview/Diagnostics.json - Microsoft.App/preview/2022-11-01-preview/Global.json