Merge ~troyanov/maas:backport-54f3e5e-3.5 into maas:3.5

Proposed by Anton Troyanov
Status: Merged
Approved by: Anton Troyanov
Approved revision: 1e3ae400dab0ad8dfd808bd07c2a1a51ccb27b4c
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~troyanov/maas:backport-54f3e5e-3.5
Merge into: maas:3.5
Diff against target: 76 lines (+15/-10)
2 files modified
src/provisioningserver/rackdservices/tests/test_tftp.py (+12/-7)
src/provisioningserver/rackdservices/tftp.py (+3/-3)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
MAAS Maintainers Pending
Review via email: mp+466801@code.launchpad.net

Commit message

fix: return 0 bytes for non-existing .lst

Resolves LP:2067793

(cherry picked from commit 54f3e5e544d998465ca7fd94b5c3e74b58ccc097)

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport-54f3e5e-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5693/console
COMMIT: 1e3ae400dab0ad8dfd808bd07c2a1a51ccb27b4c

review: Needs Fixing
Revision history for this message
Anton Troyanov (troyanov) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport-54f3e5e-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5695/console
COMMIT: 1e3ae400dab0ad8dfd808bd07c2a1a51ccb27b4c

review: Needs Fixing
Revision history for this message
Anton Troyanov (troyanov) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport-54f3e5e-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5697/console
COMMIT: 1e3ae400dab0ad8dfd808bd07c2a1a51ccb27b4c

review: Needs Fixing
Revision history for this message
Anton Troyanov (troyanov) wrote :

jenkins: !test

Revision history for this message
Anton Troyanov (troyanov) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport-54f3e5e-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 1e3ae400dab0ad8dfd808bd07c2a1a51ccb27b4c

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/rackdservices/tests/test_tftp.py b/src/provisioningserver/rackdservices/tests/test_tftp.py
2index 07b71b8..f7b65ea 100644
3--- a/src/provisioningserver/rackdservices/tests/test_tftp.py
4+++ b/src/provisioningserver/rackdservices/tests/test_tftp.py
5@@ -640,7 +640,7 @@ class TestTFTPBackend(MAASTestCase):
6 client, GetBootConfig, **params_okay
7 )
8
9- def test_get_cache_reader(self):
10+ def test_get_cache_reader_200(self):
11 params_okay = {
12 name.decode("ascii"): factory.make_name("value")
13 for name, _ in GetBootConfig.arguments
14@@ -656,6 +656,11 @@ class TestTFTPBackend(MAASTestCase):
15
16 filename = factory.make_name()
17
18+ mock_result = Mock()
19+ mock_result.code = 200
20+
21+ backend._cache_proxy.request.return_value = mock_result
22+
23 backend.get_cache_reader(f"/grub/{filename}")
24
25 backend._cache_proxy.request.assert_called_once_with(
26@@ -681,11 +686,11 @@ class TestTFTPBackend(MAASTestCase):
27 mock_result.code = 404
28
29 backend._cache_proxy.request.return_value = mock_result
30- result = yield backend.get_cache_reader(f"/grub/{filename}")
31- self.assertEqual(result.read(0), b"")
32+ with self.assertRaisesRegex(FileNotFound, rf"{filename}"):
33+ yield backend.get_cache_reader(f"{filename}")
34
35 @inlineCallbacks
36- def test_get_cache_reader_file_not_found_for_pxelinuxcfg(self):
37+ def test_get_cache_reader_zero_size(self):
38 params_okay = {
39 name.decode("ascii"): factory.make_name("value")
40 for name, _ in GetBootConfig.arguments
41@@ -696,10 +701,10 @@ class TestTFTPBackend(MAASTestCase):
42 client_service.getClientNow.return_value = succeed(client)
43 backend = TFTPBackend(self.make_dir(), client_service)
44 backend._cache_proxy = Mock()
45- filename = "pxelinux.cfg/0D0001BE"
46+ filename = "/grub/x86_64-efi/command.lst"
47
48- with self.assertRaisesRegex(FileNotFound, rf"{filename}"):
49- yield backend.get_cache_reader(f"{filename}")
50+ result = yield backend.get_cache_reader(f"/grub/{filename}")
51+ self.assertEqual(result.read(0), b"")
52
53
54 class TestTFTPService(MAASTestCase):
55diff --git a/src/provisioningserver/rackdservices/tftp.py b/src/provisioningserver/rackdservices/tftp.py
56index 85f3550..b933c9c 100644
57--- a/src/provisioningserver/rackdservices/tftp.py
58+++ b/src/provisioningserver/rackdservices/tftp.py
59@@ -317,15 +317,15 @@ class TFTPBackend(FilesystemSynchronousBackend):
60 if resp.code != 200:
61 # legacy BIOS mode is expecting to get `TFTP file not found error`
62 # for any `pxelinux.cfg/` that do not exist.
63- if str(file_name, encoding="utf-8").startswith("pxelinux.cfg"):
64- raise FileNotFound(file_name)
65 # However for anything else (at least for GRUB) things like
66 # - command.lst
67 # - fs.lst
68 # - crypto.lst
69 # - terminal.lst
70 # Are expected to be 0-sized with no error.
71- return BytesReader(bytes())
72+ if ".lst" in str(file_name, encoding="utf-8"):
73+ return BytesReader(bytes())
74+ raise FileNotFound(file_name)
75 body = yield readBody(resp)
76 return BytesReader(body)
77

Subscribers

People subscribed via source and target branches