From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 14A1745A6E; Mon, 30 Sep 2024 18:18:41 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8DB2B40656; Mon, 30 Sep 2024 18:18:26 +0200 (CEST) Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by mails.dpdk.org (Postfix) with ESMTP id 16AC540430 for ; Mon, 30 Sep 2024 18:18:22 +0200 (CEST) Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-42cb6f3a5bcso56425595e9.2 for ; Mon, 30 Sep 2024 09:18:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1727713101; x=1728317901; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eY6AtQgPj6nI6Owf6/OGIiT5xUq3LzYyBz6sfFU8ZlQ=; b=eLA+oLG1TfCDzDgVBPqV0rA6RvACZOGfzAYeUwn6SbzXJu1q7GSKPYNT4kGhuIVID4 t66fDkfIYzNMX/8oQ2rivFZY8TMwHiNIRYDoIFc6Z1jVfSgDAzSrzlLJM0UVpp52tgwy hEAlil/aUzrmPsJQWIAXpGEUd+MybULGI1g6tMau8mkDbXSMuDaSd1+7o3XyR7FTnEPt DnIL2cE3oHl8Bl7PT4eFbPLbr0TErrgchjc5o/JgJxggIsyty5mLU2S5lO6culHD7qwv mWgxm2Jj13+5Ok57qiq/rMYNPDbyfj+aSYIlVgNrF1Yq1+j6VbpNEazZE6KdCslClSgY J1Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727713101; x=1728317901; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eY6AtQgPj6nI6Owf6/OGIiT5xUq3LzYyBz6sfFU8ZlQ=; b=t2rZrn4etDYnksp3Fy6gekGHFW6MsDsG4axwh0FgBusVStqmTFAMOl4rIS2QoyoNEY UVQfF6pan0nzOtuN9LphQY2bGsDbXy5MV5PUr2m5hwv0fOCjXpxrj5BIhZ65WL02bbaX EieDz+nTkrJdcE+Q+T6mcOxCvpzXK5yhtxPuTvHRIVdMGMifkF1sq4IB48Vy1qPG/XWc llw2kYLipCOEoY9zSvzMTfRqhBnlpcHWplo1EG3hBBO0jIUR9+/Tt6N7qDOVKE+bLtDC zBE7C7wWD2LdwwDwxGTae1aP0KrC2LB8/wOK/l/3H0glNyVVdNmYX0BkSAQ8PzKjK+By 88kw== X-Gm-Message-State: AOJu0YxGCfbYn27bT6aTHd2WbfmDiASSJ2ja8MZtyGjWz8Lq29NQY/2G 7AjJcULAXO58HZRjyX4pBNGASxsZXXLXxkH97Q1qvlCFNAAz32mt13y2i0qoUdI5zaqAhFoIobK B7P8= X-Google-Smtp-Source: AGHT+IH8CjMDyQc+LFRL4rIouaWPLMZokWetIwKH2y7Q8OMJtf1hEVJBkom7gyUZoPErj8eoC5l5aw== X-Received: by 2002:a5d:414c:0:b0:37c:cfbb:d357 with SMTP id ffacd0b85a97d-37cd5aa681cmr11786744f8f.30.1727713101312; Mon, 30 Sep 2024 09:18:21 -0700 (PDT) Received: from fedora.. (ip-46.34.236.94.o2inet.sk. [46.34.236.94]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a93c2775d0bsm564923666b.11.2024.09.30.09.18.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Sep 2024 09:18:20 -0700 (PDT) From: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Eurovec?= To: dev@dpdk.org Cc: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Eurovec?= Subject: [PATCH 3/7] dts: fix remote session file transfer vars Date: Mon, 30 Sep 2024 18:18:10 +0200 Message-ID: <20240930161814.26070-4-tomas.durovec@pantheon.tech> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20240930161814.26070-1-tomas.durovec@pantheon.tech> References: <20240930161814.26070-1-tomas.durovec@pantheon.tech> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The OSSession (and its subclasses) should accept PurePaths for remote paths to translate from OS-unaware (PurePath) to OS-aware (Path) only on the remote side. For local paths, they should accept Paths, as Python is OS-aware locally. Signed-off-by: Tomáš Ďurovec --- .../remote_session/remote_session.py | 24 ++++++---------- dts/framework/remote_session/ssh_session.py | 18 ++++-------- dts/framework/testbed_model/os_session.py | 28 ++++++++----------- dts/framework/testbed_model/posix_session.py | 18 ++++-------- 4 files changed, 30 insertions(+), 58 deletions(-) diff --git a/dts/framework/remote_session/remote_session.py b/dts/framework/remote_session/remote_session.py index 8c580b070f..ab83f5b266 100644 --- a/dts/framework/remote_session/remote_session.py +++ b/dts/framework/remote_session/remote_session.py @@ -12,7 +12,7 @@ from abc import ABC, abstractmethod from dataclasses import InitVar, dataclass, field -from pathlib import PurePath +from pathlib import Path, PurePath from framework.config import NodeConfiguration from framework.exception import RemoteCommandExecutionError @@ -196,35 +196,29 @@ def is_alive(self) -> bool: """Check whether the remote session is still responding.""" @abstractmethod - def copy_from( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_from(self, source_file: str | PurePath, destination_dir: str | Path) -> None: """Copy a file from the remote Node to the local filesystem. Copy `source_file` from the remote Node associated with this remote session - to `destination_file` on the local filesystem. + to `destination_dir` on the local filesystem. Args: source_file: The file on the remote Node. - destination_file: A file or directory path on the local filesystem. + destination_dir: The directory path on the local filesystem where the `source_file` + will be saved. """ @abstractmethod - def copy_to( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_to(self, source_file: str | Path, destination_dir: str | PurePath) -> None: """Copy a file from local filesystem to the remote Node. - Copy `source_file` from local filesystem to `destination_file` on the remote Node + Copy `source_file` from local filesystem to `destination_dir` on the remote Node associated with this remote session. Args: source_file: The file on the local filesystem. - destination_file: A file or directory path on the remote Node. + destination_dir: The directory path on the remote Node where the `source_file` + will be saved. """ @abstractmethod diff --git a/dts/framework/remote_session/ssh_session.py b/dts/framework/remote_session/ssh_session.py index 66f8176833..329121913f 100644 --- a/dts/framework/remote_session/ssh_session.py +++ b/dts/framework/remote_session/ssh_session.py @@ -5,7 +5,7 @@ import socket import traceback -from pathlib import PurePath +from pathlib import Path, PurePath from fabric import Connection # type: ignore[import-untyped] from invoke.exceptions import ( # type: ignore[import-untyped] @@ -103,21 +103,13 @@ def is_alive(self) -> bool: """Overrides :meth:`~.remote_session.RemoteSession.is_alive`.""" return self.session.is_connected - def copy_from( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_from(self, source_file: str | PurePath, destination_dir: str | Path) -> None: """Overrides :meth:`~.remote_session.RemoteSession.copy_from`.""" - self.session.get(str(destination_file), str(source_file)) + self.session.get(str(source_file), str(destination_dir)) - def copy_to( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_to(self, source_file: str | Path, destination_dir: str | PurePath) -> None: """Overrides :meth:`~.remote_session.RemoteSession.copy_to`.""" - self.session.put(str(source_file), str(destination_file)) + self.session.put(str(source_file), str(destination_dir)) def close(self) -> None: """Overrides :meth:`~.remote_session.RemoteSession.close`.""" diff --git a/dts/framework/testbed_model/os_session.py b/dts/framework/testbed_model/os_session.py index 79f56b289b..1aac3659bf 100644 --- a/dts/framework/testbed_model/os_session.py +++ b/dts/framework/testbed_model/os_session.py @@ -25,7 +25,7 @@ from abc import ABC, abstractmethod from collections.abc import Iterable from ipaddress import IPv4Interface, IPv6Interface -from pathlib import PurePath +from pathlib import Path, PurePath from typing import Union from framework.config import Architecture, NodeConfiguration, NodeInfo @@ -178,35 +178,29 @@ def join_remote_path(self, *args: str | PurePath) -> PurePath: """ @abstractmethod - def copy_from( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_from(self, source_file: str | PurePath, destination_dir: str | Path) -> None: """Copy a file from the remote node to the local filesystem. Copy `source_file` from the remote node associated with this remote - session to `destination_file` on the local filesystem. + session to `destination_dir` on the local filesystem. Args: - source_file: the file on the remote node. - destination_file: a file or directory path on the local filesystem. + source_file: The file on the remote node. + destination_dir: The directory path on the local filesystem where the `source_file` + will be saved. """ @abstractmethod - def copy_to( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_to(self, source_file: str | Path, destination_dir: str | PurePath) -> None: """Copy a file from local filesystem to the remote node. - Copy `source_file` from local filesystem to `destination_file` + Copy `source_file` from local filesystem to `destination_dir` on the remote node associated with this remote session. Args: - source_file: the file on the local filesystem. - destination_file: a file or directory path on the remote node. + source_file: The file on the local filesystem. + destination_dir: The directory path on the remote Node where the `source_file` + will be saved. """ @abstractmethod diff --git a/dts/framework/testbed_model/posix_session.py b/dts/framework/testbed_model/posix_session.py index d279bb8b53..2449c0ab35 100644 --- a/dts/framework/testbed_model/posix_session.py +++ b/dts/framework/testbed_model/posix_session.py @@ -13,7 +13,7 @@ import re from collections.abc import Iterable -from pathlib import PurePath, PurePosixPath +from pathlib import Path, PurePath, PurePosixPath from framework.config import Architecture, NodeInfo from framework.exception import DPDKBuildError, RemoteCommandExecutionError @@ -85,21 +85,13 @@ def join_remote_path(self, *args: str | PurePath) -> PurePosixPath: """Overrides :meth:`~.os_session.OSSession.join_remote_path`.""" return PurePosixPath(*args) - def copy_from( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_from(self, source_file: str | PurePath, destination_dir: str | Path) -> None: """Overrides :meth:`~.os_session.OSSession.copy_from`.""" - self.remote_session.copy_from(source_file, destination_file) + self.remote_session.copy_from(source_file, destination_dir) - def copy_to( - self, - source_file: str | PurePath, - destination_file: str | PurePath, - ) -> None: + def copy_to(self, source_file: str | Path, destination_dir: str | PurePath) -> None: """Overrides :meth:`~.os_session.OSSession.copy_to`.""" - self.remote_session.copy_to(source_file, destination_file) + self.remote_session.copy_to(source_file, destination_dir) def remove_remote_dir( self, -- 2.46.1