diff --git a/equinix/services/fabricv4/models/agent_templates.py b/equinix/services/fabricv4/models/agent_templates.py index c8b90c23..48dcea44 100644 --- a/equinix/services/fabricv4/models/agent_templates.py +++ b/equinix/services/fabricv4/models/agent_templates.py @@ -15,7 +15,6 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated from equinix.services.fabricv4.models.agent_definition import AgentDefinition from equinix.services.fabricv4.models.agent_templates_state import AgentTemplatesState from equinix.services.fabricv4.models.changelog import Changelog @@ -29,7 +28,7 @@ class AgentTemplates(BaseModel): href: Optional[StrictStr] = Field(default=None, description="Agent Template URI") type: Optional[StrictStr] = Field(default=None, description="type") uuid: Optional[StrictStr] = Field(default=None, description="Equinix-assigned access point identifier") - name: Optional[Annotated[str, Field(min_length=3, strict=True, max_length=50)]] = Field(default=None, description="Equinix-provided agent template name") + name: Optional[StrictStr] = Field(default=None, description="Equinix-provided agent template name") description: Optional[StrictStr] = Field(default=None, description="Equinix-provided agent template description") state: Optional[AgentTemplatesState] = None enabled: Optional[StrictBool] = Field(default=None, description="Equinix-provided agent template enabled status") diff --git a/patches/services/fabricv4/20260729_fix_agent_templates_name_max_length.patch b/patches/services/fabricv4/20260729_fix_agent_templates_name_max_length.patch new file mode 100644 index 00000000..8cae481f --- /dev/null +++ b/patches/services/fabricv4/20260729_fix_agent_templates_name_max_length.patch @@ -0,0 +1,21 @@ +diff --git a/equinix/services/fabricv4/models/agent_templates.py b/equinix/services/fabricv4/models/agent_templates.py +index c8b90c2..48dcea4 100644 +--- a/equinix/services/fabricv4/models/agent_templates.py ++++ b/equinix/services/fabricv4/models/agent_templates.py +@@ -15,7 +15,6 @@ import json + + from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr + from typing import Any, ClassVar, Dict, List, Optional +-from typing_extensions import Annotated + from equinix.services.fabricv4.models.agent_definition import AgentDefinition + from equinix.services.fabricv4.models.agent_templates_state import AgentTemplatesState + from equinix.services.fabricv4.models.changelog import Changelog +@@ -29,7 +28,7 @@ class AgentTemplates(BaseModel): + href: Optional[StrictStr] = Field(default=None, description="Agent Template URI") + type: Optional[StrictStr] = Field(default=None, description="type") + uuid: Optional[StrictStr] = Field(default=None, description="Equinix-assigned access point identifier") +- name: Optional[Annotated[str, Field(min_length=3, strict=True, max_length=50)]] = Field(default=None, description="Equinix-provided agent template name") ++ name: Optional[StrictStr] = Field(default=None, description="Equinix-provided agent template name") + description: Optional[StrictStr] = Field(default=None, description="Equinix-provided agent template description") + state: Optional[AgentTemplatesState] = None + enabled: Optional[StrictBool] = Field(default=None, description="Equinix-provided agent template enabled status") diff --git a/tests/services/fabricv4/helpers/apis.py b/tests/services/fabricv4/helpers/apis.py index 796512a5..1dd6f9f8 100644 --- a/tests/services/fabricv4/helpers/apis.py +++ b/tests/services/fabricv4/helpers/apis.py @@ -25,6 +25,8 @@ def __init__(self, api_client: fabricv4.ApiClient) -> None: self.statistics = fabricv4.StatisticsApi(api_client) self.internet_access_services = fabricv4.InternetAccessServicesApi(api_client) self.ip_blocks = fabricv4.IpBlocksApi(api_client) + self.agents = fabricv4.AgentsApi(api_client) + self.agent_templates = fabricv4.AgentTemplatesApi(api_client) def for_user(user_name: UserName) -> Apis: diff --git a/tests/services/fabricv4/test_agent_templates_api.py b/tests/services/fabricv4/test_agent_templates_api.py new file mode 100644 index 00000000..57e7ff13 --- /dev/null +++ b/tests/services/fabricv4/test_agent_templates_api.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +import pytest + +from equinix.services import fabricv4 +from .helpers.apis import Apis, for_user +from .helpers.users import UserName + +USER_NAME = UserName.PANTHERS_FNV + + +@pytest.mark.integration +class TestAgentTemplatesApi: + apis: Apis + template_uuid: str = None + + @classmethod + def setup_class(cls) -> None: + cls.apis = for_user(USER_NAME) + cls.template_uuid = None + + def test_1_get_agent_templates(self) -> None: + response = self.apis.agent_templates.get_agent_templates_with_http_info() + assert response.status_code == 200 + assert response.data is not None + templates = response.data.data + assert templates, "No agent templates returned" + type(self).template_uuid = templates[0].uuid + assert self.template_uuid is not None, "First agent template has no UUID" + + def test_2_get_agent_template_by_uuid(self) -> None: + assert self.template_uuid is not None, "No template UUID available from test_1" + response = self.apis.agent_templates.get_agent_template_by_uuid_with_http_info( + self.template_uuid + ) + assert response.status_code == 200 + assert response.data is not None + assert response.data.uuid == self.template_uuid + assert isinstance(response.data, fabricv4.AgentTemplates) diff --git a/tests/services/fabricv4/test_agents_api.py b/tests/services/fabricv4/test_agents_api.py new file mode 100644 index 00000000..1957c9d4 --- /dev/null +++ b/tests/services/fabricv4/test_agents_api.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +import pytest + +from equinix.services import fabricv4 +from .helpers.apis import Apis, for_user +from .helpers.users import UserName + +USER_NAME = UserName.PANTHERS_FCR + + +@pytest.mark.integration +class TestAgentsApi: + apis: Apis + existing_agent_uuid: str = None + + @classmethod + def setup_class(cls) -> None: + cls.apis = for_user(USER_NAME) + cls.existing_agent_uuid = None + + response = cls.apis.agents.get_agents() + agents = response.data + if agents: + cls.existing_agent_uuid = agents[0].uuid + + def test_1_get_agents(self) -> None: + response = self.apis.agents.get_agents_with_http_info() + assert response.status_code == 200 + assert response.data is not None + + def test_2_get_agent_by_uuid(self) -> None: + if self.existing_agent_uuid is None: + pytest.skip("No existing agents found") + response = self.apis.agents.get_agent_by_uuid_with_http_info( + self.existing_agent_uuid + ) + assert response.status_code == 200 + assert response.data is not None + assert response.data.uuid == self.existing_agent_uuid + + def test_3_get_agent_activities(self) -> None: + if self.existing_agent_uuid is None: + pytest.skip("No existing agents found") + response = self.apis.agents.get_agent_activities_with_http_info( + self.existing_agent_uuid + ) + assert response.status_code == 200 + assert response.data is not None