Add nbdssl support
This commit is contained in:
@@ -60,7 +60,10 @@ class LabEnv:
|
||||
vmx_spec: str
|
||||
disk_path: str
|
||||
|
||||
def authenticate(self, read_only: bool = True) -> NfcAuthSession:
|
||||
def authenticate(
|
||||
self,
|
||||
read_only: bool = True,
|
||||
nfc_ssl: bool = True) -> NfcAuthSession:
|
||||
"""Login to the lab vCenter and complete NFC authd for the temp VM."""
|
||||
return nfc_auth.authenticate(
|
||||
host=self.host,
|
||||
@@ -70,7 +73,8 @@ class LabEnv:
|
||||
thumbprint=self.thumbprint,
|
||||
allow_untrusted=self.allow_untrusted,
|
||||
disk_path=None if read_only else self.disk_path,
|
||||
read_only=read_only)
|
||||
read_only=read_only,
|
||||
nfc_ssl=nfc_ssl)
|
||||
|
||||
def vixdisklib_connect_kwargs(
|
||||
self, extra: Optional[dict[str, Any]] = None) -> dict[str, Any]:
|
||||
@@ -82,7 +86,7 @@ class LabEnv:
|
||||
"username": self.username,
|
||||
"password": self.password,
|
||||
"vmx_spec": self.vmx_spec,
|
||||
"transport_modes": "nbd",
|
||||
"transport_modes": "nbdssl",
|
||||
"read_only": False,
|
||||
}
|
||||
if extra:
|
||||
|
||||
@@ -14,5 +14,14 @@ class TestNfcAuth:
|
||||
assert ticket.host
|
||||
assert ticket.port
|
||||
assert ticket.sessionId
|
||||
assert session.nfc_ssl is True
|
||||
assert session.authd_sock.version()
|
||||
assert session.authd_sock.cipher()
|
||||
|
||||
def test_authd_nbd_handshake_completes(self, lab: LabEnv) -> None:
|
||||
"""Complete authd with plaintext NFC after PROXY (nbd)."""
|
||||
with lab.authenticate(nfc_ssl=False) as session:
|
||||
assert session.nfc_ssl is False
|
||||
assert session.ticket.sessionId
|
||||
assert session.authd_sock.version()
|
||||
assert session.authd_sock.cipher()
|
||||
|
||||
@@ -3,15 +3,20 @@
|
||||
|
||||
"""Exercise NFC disk open and a one-sector write/read against the lab."""
|
||||
|
||||
import pytest
|
||||
|
||||
from openvixdisklib import nfc_open
|
||||
from tests.integration.base import LabEnv, SECTOR_SIZE, pattern_bytes
|
||||
|
||||
|
||||
class TestNfcOpen:
|
||||
def test_open_disk_and_read_first_sector(self, lab: LabEnv) -> None:
|
||||
@pytest.mark.parametrize(
|
||||
"nfc_ssl", [True, False], ids=["nbdssl", "nbd"])
|
||||
def test_open_disk_and_read_first_sector(
|
||||
self, lab: LabEnv, nfc_ssl: bool) -> None:
|
||||
"""Open the temp VMDK, write sector 0, and read it back."""
|
||||
expected = pattern_bytes(SECTOR_SIZE, b"NFC-OPEN-S0")
|
||||
with lab.authenticate(read_only=False) as session:
|
||||
with lab.authenticate(read_only=False, nfc_ssl=nfc_ssl) as session:
|
||||
with nfc_open.open_disk(
|
||||
session, lab.disk_path, read_only=False) as disk:
|
||||
assert disk.path == lab.disk_path
|
||||
|
||||
@@ -3,13 +3,17 @@
|
||||
|
||||
"""Exercise the VDDK-compatible openvixdisklib handle against the lab."""
|
||||
|
||||
import pytest
|
||||
|
||||
from openvixdisklib import openvixdisklib as vixdisklib
|
||||
from tests.integration.base import (
|
||||
LabEnv, SECTOR_AT_1GB, SECTOR_SIZE, pattern_bytes)
|
||||
|
||||
|
||||
class TestOpenvixdisklib:
|
||||
def test_write_and_read_sector_zero_and_one_gib(self, lab: LabEnv) -> None:
|
||||
@pytest.mark.parametrize("transport_mode", ["nbdssl", "nbd"])
|
||||
def test_write_and_read_sector_zero_and_one_gib(
|
||||
self, lab: LabEnv, transport_mode: str) -> None:
|
||||
"""Write then read sector 0 and the sector at a 1 GiB offset."""
|
||||
handle = vixdisklib.VixDiskLibHandle(
|
||||
vixdisklib_compatibility_version="8.0",
|
||||
@@ -18,13 +22,16 @@ class TestOpenvixdisklib:
|
||||
read_buf = vixdisklib.get_buffer(SECTOR_SIZE)
|
||||
connect_kwargs = lab.vixdisklib_connect_kwargs({
|
||||
"allow_untrusted": lab.allow_untrusted,
|
||||
"transport_modes": transport_mode,
|
||||
})
|
||||
patterns = {
|
||||
0: pattern_bytes(SECTOR_SIZE, b"OVDL-S0"),
|
||||
SECTOR_AT_1GB: pattern_bytes(SECTOR_SIZE, b"OVDL-1GB"),
|
||||
}
|
||||
assert handle.get_transport_modes() == ["nbdssl", "nbd"]
|
||||
with handle.connect(**connect_kwargs) as conn:
|
||||
with handle.open(conn, lab.disk_path, flags=0) as disk:
|
||||
assert handle.get_transport_mode(disk) == transport_mode
|
||||
for start, expected in patterns.items():
|
||||
write_buf[:SECTOR_SIZE] = expected
|
||||
handle.write(disk, start, 1, write_buf)
|
||||
|
||||
Reference in New Issue
Block a user