Commit 186ca774 authored by Dimitrios Gogos's avatar Dimitrios Gogos
Browse files

fix: update traffic influence device handling to require IPv4 address

parent 0eb0c8e3
Loading
Loading
Loading
Loading
Loading
+1 −1
Changes for mcp_module/README.md: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ mcp_module/
| `get_qod_session_oai` | `tools/qod.py` | Retrieves QoD session details |
| `delete_qod_session_oai` | `tools/qod.py` | Deletes an existing QoD session |
| `create_traffic_influence` | `tools/traffic_influence.py` | Creates traffic influence for an application |
| `create_traffic_influence_device` | `tools/traffic_influence.py` | Creates device-specific traffic influence; device may be omitted when identified by the bearer token |
| `create_traffic_influence_device` | `tools/traffic_influence.py` | Creates traffic influence for one device, identified by its IPv4 address |
| `get_traffic_influences` | `tools/traffic_influence.py` | Lists traffic influence resources, optionally filtered by app id |
| `get_traffic_influence` | `tools/traffic_influence.py` | Retrieves one traffic influence resource by id |
| `delete_traffic_influence` | `tools/traffic_influence.py` | Requests deletion of a traffic influence resource by id |
+1 −1
Changes for mcp_module/models/traffic_influence_models.py: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -66,5 +66,5 @@ class CreateTrafficInfluenceInput(BaseModel):
class CreateTrafficInfluenceDeviceInput(CreateTrafficInfluenceInput):
    device: DeviceInput | None = Field(
        default=None,
        description="Device identifiers; omit when the authorization token identifies the device.",
        description="The device, identified by ipv4Address. OEG requires it.",
    )
+2 −2
Changes for mcp_module/tools/traffic_influence.py: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -75,8 +75,8 @@ async def create_traffic_influence_device(
    """
    Create device-specific traffic influence toward local application instances.

    Supply device identifiers, or omit device when the authorization token
    identifies it.
    Identify the device by its IPv4 address. OEG cannot infer the device from
    the authorization token and refuses other identifiers.

    Optionally target an instance, zone, or region and supply traffic
    filters or a notification subscription.
+5 −10
Changes for tests/mcp_module/test_tool_requests.py: 5 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ SESSION = {
    "duration": 60,
    "devicePorts": {"ranges": [{"from": 80, "to": 90}]},
}
DEVICE_IPV4 = {"ipv4Address": {"publicAddress": "198.51.100.1", "publicPort": 443}}


@dataclass
@@ -228,13 +229,13 @@ def cases():
                "inp": CreateTrafficInfluenceDeviceInput(
                    apiConsumerId="consumer",
                    appId=APP,
                    device=SESSION["device"],
                    device=DEVICE_IPV4,
                    idempotencyKey="retry-1",
                ),
            },
            "POST",
            "/traffic-influence/v0.10/traffic-influence-devices",
            {"apiConsumerId": "consumer", "appId": APP, "device": SESSION["device"]},
            {"apiConsumerId": "consumer", "appId": APP, "device": DEVICE_IPV4},
            status=201,
            idempotency=True,
        ),
@@ -405,14 +406,8 @@ def test_cases_cover_all_registered_tools():
    assert len(CASES) == 20


@pytest.mark.parametrize(
    "device",
    [None, {"ipv4Address": {"publicAddress": "198.51.100.1", "publicPort": 443}}],
)
def test_device_traffic_influence_with_token_or_ip(device, mock_oeg):
    body = {"apiConsumerId": "consumer", "appId": APP}
    if device is not None:
        body["device"] = device
def test_device_traffic_influence_without_idempotency_key(mock_oeg):
    body = {"apiConsumerId": "consumer", "appId": APP, "device": DEVICE_IPV4}

    def respond(request):
        assert request.url.path == "/traffic-influence/v0.10/traffic-influence-devices"