Merge ~ack/maas:1862680-commissioning-script-only-json-output into maas:master

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: ee9b60c836ee908a199a914204fbc3efda349168
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1862680-commissioning-script-only-json-output
Merge into: maas:master
Diff against target: 111 lines (+54/-5)
3 files modified
src/maasserver/models/node.py (+1/-1)
src/maasserver/models/tests/test_node.py (+51/-2)
src/provisioningserver/refresh/node_info_scripts.py (+2/-2)
Reviewer Review Type Date Requested Status
Björn Tillenius Approve
MAAS Lander Approve
Adam Collard (community) Approve
Review via email: mp+378867@code.launchpad.net

Commit message

LP: #1862680 - Silence wget since script output is parsed as json

To post a comment you must log in.
Revision history for this message
Adam Collard (adam-collard) :
review: Approve
Revision history for this message
Björn Tillenius (bjornt) :
review: Needs Information
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b 1862680-commissioning-script-only-json-output lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: a5ffe1c3849a8c46d70c9a50e18685e36a1d5587

review: Approve
Revision history for this message
Alberto Donato (ack) wrote :

@Bjorn updated as suggested, thanks

Revision history for this message
Björn Tillenius (bjornt) wrote :

+1

review: Approve

There was an error fetching revisions from git servers. Please try again in a few minutes. If the problem persists, contact Launchpad support.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/models/node.py b/src/maasserver/models/node.py
2index 5306ff1..0203088 100644
3--- a/src/maasserver/models/node.py
4+++ b/src/maasserver/models/node.py
5@@ -4534,7 +4534,7 @@ class Node(CleanSave, TimestampedModel):
6 script_name=LXD_OUTPUT_NAME
7 )
8 update_node_network_information(
9- self, json.loads(script.output), NUMANode.objects.filter(node=self)
10+ self, json.loads(script.stdout), NUMANode.objects.filter(node=self)
11 )
12
13 def set_initial_networking_configuration(self):
14diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
15index 62fc0a9..dc9ec6c 100644
16--- a/src/maasserver/models/tests/test_node.py
17+++ b/src/maasserver/models/tests/test_node.py
18@@ -7295,11 +7295,58 @@ class TestNodeNetworking(MAASTransactionServerTestCase):
19 node, scripts=[lxd_script.name, ip_addr_script.name]
20 )
21 node.current_commissioning_script_set = commissioning_script_set
22+ output = json.dumps(XENIAL_NETWORK).encode("utf-8")
23 factory.make_ScriptResult(
24 script_set=commissioning_script_set,
25 script=lxd_script,
26 exit_status=0,
27- output=json.dumps(XENIAL_NETWORK).encode("utf-8"),
28+ output=output,
29+ stdout=output,
30+ )
31+ factory.make_ScriptResult(
32+ script_set=commissioning_script_set,
33+ script=ip_addr_script,
34+ exit_status=0,
35+ output=IP_ADDR_OUTPUT_XENIAL,
36+ )
37+ # Create NUMA nodes.
38+ test_hooks.create_numa_nodes(node)
39+ # restore_network_interfaces() will set up the network intefaces
40+ # specified in ip_addr_results_xenial.txt
41+ node.restore_network_interfaces()
42+ self.assertEqual(
43+ ["ens10", "ens11", "ens12", "ens3"],
44+ sorted(interface.name for interface in node.interface_set.all()),
45+ )
46+
47+ def test_restore_network_interfaces_ignores_stderr(self):
48+ node = factory.make_Node()
49+ IP_ADDR_OUTPUT_FILE = os.path.join(
50+ os.path.dirname(test_hooks.__file__), "ip_addr_results_xenial.txt"
51+ )
52+ with open(IP_ADDR_OUTPUT_FILE, "rb") as fd:
53+ IP_ADDR_OUTPUT_XENIAL = fd.read()
54+ lxd_script = factory.make_Script(
55+ name=LXD_OUTPUT_NAME, script_type=SCRIPT_TYPE.COMMISSIONING
56+ )
57+ ip_addr_script = factory.make_Script(
58+ name=IPADDR_OUTPUT_NAME, script_type=SCRIPT_TYPE.COMMISSIONING
59+ )
60+ XENIAL_NETWORK = deepcopy(test_hooks.SAMPLE_LXD_JSON)
61+ XENIAL_NETWORK["network"] = test_hooks.SAMPLE_LXD_XENIAL_NETWORK_JSON
62+ commissioning_script_set = ScriptSet.objects.create_commissioning_script_set(
63+ node, scripts=[lxd_script.name, ip_addr_script.name]
64+ )
65+ node.current_commissioning_script_set = commissioning_script_set
66+ output = json.dumps(XENIAL_NETWORK).encode("utf-8")
67+ error_message = b"some error message"
68+ factory.make_ScriptResult(
69+ script_set=commissioning_script_set,
70+ script=lxd_script,
71+ exit_status=0,
72+ output=error_message + output,
73+ stdout=output,
74+ stderr=error_message,
75 )
76 factory.make_ScriptResult(
77 script_set=commissioning_script_set,
78@@ -7336,11 +7383,13 @@ class TestNodeNetworking(MAASTransactionServerTestCase):
79 node, scripts=[lxd_script.name, ip_addr_script.name]
80 )
81 node.current_commissioning_script_set = commissioning_script_set
82+ output = json.dumps(XENIAL_NETWORK).encode("utf-8")
83 factory.make_ScriptResult(
84 script_set=commissioning_script_set,
85 script=lxd_script,
86 exit_status=0,
87- output=json.dumps(XENIAL_NETWORK).encode("utf-8"),
88+ output=output,
89+ stdout=output,
90 )
91 factory.make_ScriptResult(
92 script_set=commissioning_script_set,
93diff --git a/src/provisioningserver/refresh/node_info_scripts.py b/src/provisioningserver/refresh/node_info_scripts.py
94index 31641e4..bcb29c3 100644
95--- a/src/provisioningserver/refresh/node_info_scripts.py
96+++ b/src/provisioningserver/refresh/node_info_scripts.py
97@@ -120,12 +120,12 @@ LXD_SCRIPT = dedent(
98 url=$(echo "$url" | awk -F '/' ' { print $1 "//" $3 } ')
99
100 if [ -z "$url" ] || $(echo "$url" | grep -vq "://"); then
101- echo "ERROR: Unable to find rack controller URL!"
102+ echo "ERROR: Unable to find rack controller URL!" >&2
103 exit 1
104 fi
105
106 BINARY="$(archdetect | cut -d '/' -f1 | sed 's/i386/386/g')"
107- wget $url/machine-resources/$BINARY -O $DOWNLOAD_PATH/$BINARY 1>&2
108+ wget $url/machine-resources/$BINARY -O $DOWNLOAD_PATH/$BINARY >&2
109 chmod +x $DOWNLOAD_PATH/$BINARY
110 $DOWNLOAD_PATH/$BINARY
111 """

Subscribers

People subscribed via source and target branches