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 2912F45A9E; Wed, 2 Oct 2024 14:19:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1011240614; Wed, 2 Oct 2024 14:18:50 +0200 (CEST) Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) by mails.dpdk.org (Postfix) with ESMTP id 0409240430 for ; Mon, 30 Sep 2024 18:02:13 +0200 (CEST) Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-5398b589032so3258997e87.1 for ; Mon, 30 Sep 2024 09:02:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1727712132; x=1728316932; 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=GPOTiazBZZ0vc4S8lgSSxlCoypdm92MTZQcsdlqeFFNKQMkDmA6m5eBu1XkJc6ptT5 feIu8khDPRAPB5svDFbZ/LU/e5UGEOz+oXstEIbHt7EMc9JHxLAA1DZZe0OjTdAKgnpq /Dyrcz8QC0gKV+o4PBmiQ+W2Bz4woNQYFP+TrJLvQDJjefUJy1d/zHfngSbMCcJUTl9P 150AwSkR2DpR9LEU3QuHd0dR9VyQLHT5Qz4yQsKZt3dY0DG1FXwHlbKP0wa9EPKkxZhn w6bp3oQX+edRz8INAbG1Se7N9eQ+9kr2TVTSefjVRH8xHTZurEvc+yexCFuzt6avs3ro IhpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727712132; x=1728316932; 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=j3jva4+B20KPlTMsu9+KABg4QToWMDZdYkvJTKKTNjlzLIZ7RnceelxFmozwAi5Pcr AzsUnUS8vRxLgqAfdW5JxxHOAdsuU0GuFouWi69gatUyYvK6VRpMCmJ3VG7a26ASbNRn 0UElV37AOXfY02+DgZar6y56C3ijbm8GS0AdQrtSA52K4bS8JiU3Y70rmBmIAorti/Sn 9+IPI2GbPMc4832cDohg7lbGDOxkYCN1EmSw3c7KxJmuI6s1ap73u78zrCCHPXEsP4MD UQSDeRi+TMNF8dKMzAwmFfeoQYhz7ZsM0tY4NB/v0G7wInOXclsi8OjJ15Wt/f43IUdP ItGQ== X-Gm-Message-State: AOJu0Yygb7A0c80djiFGTy7YB9TQ379e0MDK8RLVfogAUa58G1BnA2p4 1+RlE13hwNHWTgCiIXugUw1KgOtQzdCLaiz+GIgTR3WJBbHR4xxpjegdRbSbyzQL4dWOphIq+8I rzS8= X-Google-Smtp-Source: AGHT+IGRgJPmTo5rijtYnsRki9cnxuZZDHJPzFio84YwZZFMqiBBsPMKIMe0XX/Okg1ThTbEU87yYQ== X-Received: by 2002:a05:6512:130f:b0:539:905c:15c5 with SMTP id 2adb3069b0e04-539905c1862mr3927671e87.35.1727712131804; Mon, 30 Sep 2024 09:02:11 -0700 (PDT) Received: from fedora.. (ip-46.34.236.94.o2inet.sk. [46.34.236.94]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a93c297b597sm544767666b.182.2024.09.30.09.02.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Sep 2024 09:02:11 -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:02:00 +0200 Message-ID: <20240930160204.19582-4-tomas.durovec@pantheon.tech> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20240930160204.19582-1-tomas.durovec@pantheon.tech> References: <20240930160204.19582-1-tomas.durovec@pantheon.tech> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Wed, 02 Oct 2024 14:18:39 +0200 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