diff --git a/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/changelog.md b/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/changelog.md new file mode 100644 index 0000000000..347b59c2e3 --- /dev/null +++ b/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/changelog.md @@ -0,0 +1,5 @@ +## Version 0.1.0: Initial release + +v0.1.0 of the AVxcelerate Resource Manager REST API has been officially released as part of the 2025 R2 release. + +The AVxcelerate Resource Manager REST API v0.1.0 is compatible with the AVX Architecture V2. diff --git a/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/explore.aws-pre-prod-api-resources-v1.json b/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/explore.aws-pre-prod-api-resources-v1.json new file mode 100644 index 0000000000..31f12f014d --- /dev/null +++ b/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/explore.aws-pre-prod-api-resources-v1.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"AVxcelerate Resource Manager","summary":"","contact":{"name":"Ansys AVxcelerate Autonomy","url":"https://developer.ansys.com/docs/avxcelerate","email":"TeamTyson@ansys.com"},"version":"0.1.0"},"servers":[{"url":"/api/resources/v1"}],"paths":{"/health":{"get":{"tags":["health"],"summary":"Health","description":"Returns healthy message.","operationId":"health-health","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health-Health"}}}}},"security":[{"HTTPBearer":[]}]}},"/queues":{"post":{"tags":["queues"],"summary":"Create Queue","description":"Create a new queue.\n\n:param queue: The queue to create","operationId":"queues-create_queue","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Queues-Create Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["queues"],"summary":"Update Queue","description":"Update a queue using its name.\n\n:param queue: The queue to update","operationId":"queues-update_queue","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Queues-Update Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"get":{"tags":["queues"],"summary":"Get Queues","description":"Get all queues using filter.\n\n:param filter_exp: OData filter to filter queues\n:param offset: items to skip\n:param limit: number of items to retrieve","operationId":"queues-get_queues","parameters":[{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter expression","description":"The expression must be compatible with OData"},"description":"The expression must be compatible with OData"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","title":"The pagination offset","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"title":"The pagination limit","default":100}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QueueRead"},"title":"Response Queues-Get Queues"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/queues/{queue_id}":{"get":{"tags":["queues"],"summary":"Get Queue","description":"Get a queue by its id.\n\n:param queue_id: id of the queue to retrieve","operationId":"queues-get_queue","parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"integer","title":"Queue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs":{"post":{"tags":["jobs"],"summary":"Create Job","description":"Create a new job.\n\n:param job: The job to create","operationId":"jobs-create_job","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Jobs-Create Job"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"get":{"tags":["jobs"],"summary":"Get Jobs","description":"Get all jobs using filter.\n\n:param filter: OData filter to filter jobs\n:param offset: items to skip\n:param limit: number of items to retrieve","operationId":"jobs-get_jobs","parameters":[{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Exp"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobRead"},"title":"Response Jobs-Get Jobs"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Job","description":"Get a job by its id.\n\n:param job_id: id of the job to retrieve","operationId":"jobs-get_job","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs/{job_id}/status":{"get":{"tags":["jobs"],"summary":"Get Job Status","description":"Get job status by its id.\n\n:param job_id: id of the job to retrieve","operationId":"jobs-get_job_status","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusEnum"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs/{job_id}/clean":{"post":{"tags":["jobs"],"summary":"Clean Job","description":"Clean job resources.\n\n:param job_id: id of the job to clean","operationId":"jobs-clean_job","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/plugins":{"get":{"tags":["plugins"],"summary":"Get Plugins","description":"Get all plugins.","operationId":"plugins-get_plugins","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PluginConfiguration"},"type":"array","title":"Response Plugins-Get Plugins"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["plugins"],"summary":"Register Plugin","description":"Register a new plugin.\n\n:param plugin: The plugin configuration","operationId":"plugins-register_plugin","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginConfiguration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginConfiguration"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/applications":{"get":{"tags":["applications"],"summary":"Get Applications","description":"Get applications.","operationId":"applications-get_applications","parameters":[{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter expression","description":"The expression must be compatible with OData"},"description":"The expression must be compatible with OData"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","title":"The pagination offset","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"title":"The pagination limit","default":100}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationRead"},"title":"Response Applications-Get Applications"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["applications"],"summary":"Create Application","description":"Creates a new application.\n\n:param application: The application to create","operationId":"applications-create_application","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Applications-Create Application"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["applications"],"summary":"Update Application","description":"Updates an application.\n\n:param application: The application to update","operationId":"applications-update_application","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Applications-Update Application"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/applications/{app_id}":{"get":{"tags":["applications"],"summary":"Get Application","description":"Gets application by its id.\n\n:param app_id: id of the application","operationId":"applications-get_application","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/app-runtime-config/application/{app_id}":{"get":{"tags":["app-runtime-config"],"summary":"Get App Runtime Configs For Application","description":"Get all queues registered for given application id.\n\nIt retrieves the queues for the provided application from AppRuntimeConfig Model.\n\n:param app_id: Optional field if provided returns the registered queues for given application\n:param filter_exp: OData filter to filter queues\n:param offset: items to skip\n:param limit: number of items to retrieve","operationId":"app-runtime-config-get_app_runtime_configs_for_application","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}},{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter expression","description":"The expression must be compatible with OData"},"description":"The expression must be compatible with OData"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","title":"The pagination offset","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"title":"The pagination limit","default":100}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AppRuntimeConfigRead"},"title":"Response App-Runtime-Config-Get App Runtime Configs For Application"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/app-runtime-config":{"get":{"tags":["app-runtime-config"],"summary":"Get App Runtime Config","description":"Get application queue for given queue id and application id.\n\n:param queue_id: queue id\n:param app_id: application id","operationId":"app-runtime-config-get_app_runtime_config","parameters":[{"name":"queue_id","in":"query","required":true,"schema":{"type":"integer","title":"Queue Id"}},{"name":"app_id","in":"query","required":true,"schema":{"type":"integer","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppRuntimeConfigRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/app-runtime-config/{queue_id}/application/{app_id}":{"post":{"tags":["app-runtime-config"],"summary":"Register Application To Queue","description":"Registers an application to the provided queue.\n\n:param queue_id: The queue where the application will be registered\n:param app_id: The application to register","operationId":"app-runtime-config-register_application_to_queue","parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"integer","title":"Queue Id"}},{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppRuntimeConfigCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response App-Runtime-Config-Register Application To Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["app-runtime-config"],"summary":"Update Application To Queue","description":"Update an application to the provided queue.\n\n:param queue_id: The queue where the application will be registered\n:param app_id: The application to update","operationId":"app-runtime-config-update_application_to_queue","parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"integer","title":"Queue Id"}},{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppRuntimeConfigCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response App-Runtime-Config-Update Application To Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AppRuntimeConfigAttributes":{"properties":{"image":{"type":"string","title":"Image"},"working_dir":{"type":"string","title":"Working Dir"},"mount":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Mount"},"network":{"type":"string","title":"Network"},"ports":{"items":{"type":"integer"},"type":"array","title":"Ports"}},"type":"object","title":"AppRuntimeConfigAttributes","description":"Attribute definition for AppRuntimeConfig data model."},"AppRuntimeConfigCreate":{"properties":{"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"anyOf":[{"$ref":"#/components/schemas/AppRuntimeConfigAttributes"},{"type":"null"}]},"service_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Port"}},"type":"object","title":"AppRuntimeConfigCreate","description":"AppRuntimeConfig definition for creation."},"AppRuntimeConfigRead":{"properties":{"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"anyOf":[{"$ref":"#/components/schemas/AppRuntimeConfigAttributes"},{"type":"null"}]},"service_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Port"},"app_id":{"type":"integer","title":"App Id"},"queue_id":{"type":"integer","title":"Queue Id"},"application":{"$ref":"#/components/schemas/ApplicationRead"},"queue":{"$ref":"#/components/schemas/QueueRead"}},"type":"object","required":["app_id","queue_id","application","queue"],"title":"AppRuntimeConfigRead","description":"Public application queue definition."},"ApplicationAttributes":{"properties":{"kpis":{"items":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object"},"type":"array","title":"Kpis"},"assets":{"items":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object"},"type":"array","title":"Assets"},"solver_settings":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Solver Settings"}},"type":"object","title":"ApplicationAttributes","description":"Attribute definition for Application data model."},"ApplicationCreate":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"parent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent"},"application_type":{"type":"string","title":"Application Type"},"attributes":{"anyOf":[{"$ref":"#/components/schemas/ApplicationAttributes"},{"type":"null"}]}},"type":"object","required":["name","version"],"title":"ApplicationCreate","description":"Application definition for creation."},"ApplicationRead":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"parent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent"},"application_type":{"type":"string","title":"Application Type"},"attributes":{"anyOf":[{"$ref":"#/components/schemas/ApplicationAttributes"},{"type":"null"}]},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","version","id"],"title":"ApplicationRead","description":"Public application definition."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobCreate":{"properties":{"name":{"type":"string","title":"Name"},"queue_id":{"type":"integer","title":"Queue Id"},"parent_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Job Id"},"application_id":{"type":"integer","title":"Application Id"},"arguments":{"items":{"type":"string"},"type":"array","title":"Arguments","default":[]},"replica_count":{"type":"integer","title":"Replica Count","default":1},"auto_clean":{"type":"boolean","title":"Auto Clean","default":false},"resources_requested":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"labels":{"additionalProperties":{"type":"string"},"type":"object","title":"Labels","default":{}},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}}},"type":"object","required":["name","queue_id","application_id"],"title":"JobCreate","description":"Job definition on creation."},"JobRead":{"properties":{"name":{"type":"string","title":"Name"},"queue_id":{"type":"integer","title":"Queue Id"},"parent_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Job Id"},"application_id":{"type":"integer","title":"Application Id"},"arguments":{"items":{"type":"string"},"type":"array","title":"Arguments","default":[]},"replica_count":{"type":"integer","title":"Replica Count","default":1},"auto_clean":{"type":"boolean","title":"Auto Clean","default":false},"resources_requested":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"labels":{"additionalProperties":{"type":"string"},"type":"object","title":"Labels","default":{}},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}},"id":{"type":"integer","title":"Id"},"internal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Id"},"status":{"$ref":"#/components/schemas/JobStatusEnum"},"cleaned":{"type":"boolean","title":"Cleaned"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"status_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Status Updated At"},"failed_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed Reason"}},"type":"object","required":["name","queue_id","application_id","id","internal_id","status","cleaned","created_at","status_updated_at","failed_reason"],"title":"JobRead","description":"Public job definition."},"JobStatusEnum":{"type":"string","enum":["pending","running","failed","succeeded"],"title":"JobStatusEnum","description":"Enum of job status."},"JsonValue":{},"PluginConfiguration":{"properties":{"name":{"type":"string","title":"Name"},"module_name":{"type":"string","title":"Module Name"},"class_name":{"type":"string","title":"Class Name"},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}}},"type":"object","required":["name","module_name","class_name"],"title":"PluginConfiguration","description":"Plugin configuration."},"QueueCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"plugin":{"type":"string","title":"Plugin"},"working_dir":{"type":"string","title":"Working Dir","default":"/jobs"},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"maximum_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}},"storages":{"items":{"$ref":"#/components/schemas/JsonValue"},"type":"array","title":"Storages","default":[]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}}},"type":"object","required":["name","description","plugin"],"title":"QueueCreate","description":"Queue definition for creation."},"QueueRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"plugin":{"type":"string","title":"Plugin"},"working_dir":{"type":"string","title":"Working Dir","default":"/jobs"},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"maximum_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}},"storages":{"items":{"$ref":"#/components/schemas/JsonValue"},"type":"array","title":"Storages","default":[]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","description","plugin","id"],"title":"QueueRead","description":"Public queue definition."},"ResourcesDefinition":{"properties":{"cpu":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cpu"},"memory_gb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Memory Gb"}},"type":"object","title":"ResourcesDefinition","description":"Resource definition."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}} \ No newline at end of file diff --git a/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/intro_archv2_resources_api.md b/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/intro_archv2_resources_api.md new file mode 100644 index 0000000000..c477187763 --- /dev/null +++ b/2025R2_SP2/AVX_Explore_Resources_API_V1_ArchV2/intro_archv2_resources_api.md @@ -0,0 +1,132 @@ +## Introduction + +The AVxcelerate Resource Manager REST API v0.1.0 is compatible with the AVX Architecture V2. + +This REST API allows to perform CRUD (Create, Read, Update, and Delete) operations on resources such as queues, deployments, applications and app-runtime-configurations. + +## Features + +### Queues + +* You can create queues with the required storages, resource limits and environment variables +* Allowing to manage queues helps will help you configure different applications within resource limits and group the applications requiring same storage together. +* You can adjust the maximum number of workers that can concurrently run on a queue using the parameter 'maximum_allowed_worker_instances' + +### Plugins + + You can register a plugin with definition of container runtime. +For example: Docker Engine / Kubernetes + +### Jobs + +* You can submit a resource-manager job by providing application details (name, version, image, environment variables, etc.) and track it to its completion. +* You can also check the status of the job and clean the resources the job has acquired. + +## Python helper + +The AVxcelerate python APIs are hosted as a python package on a cluster as part of the Explore service deployment. The developers can install the package using pip and use it to call AVx autonomy APIs without needing to make raw REST calls. + +PyPi Regsitry URL: + +The python package is hosted as PyPi compliant registry on each deployed cluster. The registry URL is like this: + +https://BASE_URL/pypi + +For example, for AFT deployment: + + + +## Usage example + +Pre-requisites: + +We assume that on the system is running with the **Ubuntu 22.04** version, and that the following tools are already installed: + +- python 3.10 +- pip 25.1 +- uv 0.6 + +And we assume that you are using AVx Autonomy Toolchain version **25R2.1** + +Step 1: Create virtual environment + +```bash +$ python -m venv .venv +``` + +Step 2: Activate the virtual environment + +```bash +$ source .venv/bin/activate +``` + +Step 3: Install python packages: + +- ansys-api-avxcelerate-autonomy +- ansys-avxcelerate-autonomy + +```bash +$ pip install ansys-api-avxcelerate-autonomy ansys-avxcelerate-autonomy --extra-index-url [https://explore-service.traefik.me:9081/pypi](https://explore-service.traefik.me:9081/v1/pypi) +``` + +Step 4: Use ansys-api-avxcelerate-autonomy and ansys-avxcelerate-autonomy in your python code + + +```python +import asyncio + +from ansys.api.avxcelerate.autonomy.explore_service.v1.api.jobs_api import JobsApi + +from ansys.api.avxcelerate.autonomy.explore_service.v1.api_client import ApiClient + +from ansys.api.avxcelerate.autonomy.explore_service.v1.configuration import Configuration + +from ansys.api.avxcelerate.autonomy.explore_service.v1.exceptions import NotFoundException + +from ansys.api.avxcelerate.autonomy.explore_service.v1.models.explore_job_read import ExploreJobRead + +from ansys.avxcelerate.autonomy.utils.auth_client_session import AuthClientSession + +from ansys.avxcelerate.autonomy.utils.token_provider import TokenProvider + +async def main(): + +base_url = "" + +configuration = Configuration(host=f"{base_url}/api/explore/v1") + +async with ApiClient(configuration) as api_client: + +session = AuthClientSession(base_url=f"{base_url}/api/explore/v1/") + +provider = TokenProvider(f"{base_url}/auth") + +session.set_provider(provider) + +provider.login() + +api_client.rest_client.pool_manager = session + +jobs_api = JobsApi(api_client) + +job_id = "exp-dec894b2-647c-4ca5-b516-cdfc18c58fdd" + +try: + +job: ExploreJobRead = await jobs_api.get_job(job_id) + +print(job) + +except NotFoundException: + +print("No job found against this id") + +except Exception as ex: + +print(str(ex)) + +print("Couldn't get job against this job id") + +asyncio.run(main()) +``` + diff --git a/2025R2_SP2/avx-simulation-framework-2025-r2.2.zip b/2025R2_SP2/avx-simulation-framework-2025-r2.2.zip new file mode 100644 index 0000000000..d453da8a9d Binary files /dev/null and b/2025R2_SP2/avx-simulation-framework-2025-r2.2.zip differ diff --git a/2025R2_SP2/avx-simulation-framework-2025-r2.zip b/2025R2_SP2/avx-simulation-framework-2025-r2.zip deleted file mode 100644 index c566c661fa..0000000000 Binary files a/2025R2_SP2/avx-simulation-framework-2025-r2.zip and /dev/null differ