Merge ~rodrigo-barbieri2010/ubuntu/+source/heat:lp2012073_yoga into ~ubuntu-openstack-dev/ubuntu/+source/heat:stable/yoga
- Git
- lp:~rodrigo-barbieri2010/ubuntu/+source/heat
- lp2012073_yoga
- Merge into stable/yoga
Proposed by
Rodrigo Barbieri
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | b442d2f38ed06af662c66502406e7c6282c8579f | ||||
Proposed branch: | ~rodrigo-barbieri2010/ubuntu/+source/heat:lp2012073_yoga | ||||
Merge into: | ~ubuntu-openstack-dev/ubuntu/+source/heat:stable/yoga | ||||
Diff against target: |
344 lines (+322/-0) 3 files modified
debian/changelog (+6/-0) debian/patches/lp2012073.patch (+315/-0) debian/patches/series (+1/-0) |
||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Corey Bryant | Pending | ||
Review via email: mp+439169@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/debian/changelog b/debian/changelog |
2 | index 67b6f4f..fc3911b 100644 |
3 | --- a/debian/changelog |
4 | +++ b/debian/changelog |
5 | @@ -1,3 +1,9 @@ |
6 | +heat (1:18.0.0-0ubuntu1.2) UNRELEASED; urgency=medium |
7 | + |
8 | + * d/p/lp2012073.patch: Decode UTF-8 body data in SwiftSignal (LP: #2012073). |
9 | + |
10 | + -- Rodrigo Barbieri <rodrigo.barbieri@canonical.com> Fri, 17 Mar 2023 12:46:43 -0300 |
11 | + |
12 | heat (1:18.0.0-0ubuntu1.1) jammy; urgency=medium |
13 | |
14 | * d/gbp.conf: Create stable/yoga branch. |
15 | diff --git a/debian/patches/lp2012073.patch b/debian/patches/lp2012073.patch |
16 | new file mode 100644 |
17 | index 0000000..6014c58 |
18 | --- /dev/null |
19 | +++ b/debian/patches/lp2012073.patch |
20 | @@ -0,0 +1,315 @@ |
21 | +From 8eaaf6fcabf9b2f3e6d0bc967c8d1b67ac532f50 Mon Sep 17 00:00:00 2001 |
22 | +From: Zane Bitter <zbitter@redhat.com> |
23 | +Date: Tue, 20 Dec 2022 22:51:55 -0500 |
24 | +Subject: [PATCH] Decode UTF-8 body data in SwiftSignal |
25 | + |
26 | +Change-Id: Ie12c2df93f846629a7c8b7c6415cebc31eaba1bc |
27 | +Story: #2010485 |
28 | +Task: 47053 |
29 | +(cherry picked from commit a0ff4b98b700c7f31a9f14d3d62eeaf3b2047139) |
30 | +(cherry picked from commit 6343b64e703221402f0d40fc0e62da944551e2dd) |
31 | +--- |
32 | + .../resources/openstack/heat/swiftsignal.py | 2 + |
33 | + heat/tests/openstack/heat/test_swiftsignal.py | 111 +++++++++--------- |
34 | + 2 files changed, 59 insertions(+), 54 deletions(-) |
35 | + |
36 | +diff --git a/heat/engine/resources/openstack/heat/swiftsignal.py b/heat/engine/resources/openstack/heat/swiftsignal.py |
37 | +index dc78b9310..295f6ae4f 100644 |
38 | +--- a/heat/engine/resources/openstack/heat/swiftsignal.py |
39 | ++++ b/heat/engine/resources/openstack/heat/swiftsignal.py |
40 | +@@ -267,6 +267,8 @@ class SwiftSignal(resource.Resource): |
41 | + continue |
42 | + |
43 | + body = signal[1] |
44 | ++ if isinstance(body, bytes): |
45 | ++ body = body.decode() |
46 | + if body == swift.IN_PROGRESS: # Ignore the initial object |
47 | + continue |
48 | + if body == "": |
49 | +diff --git a/heat/tests/openstack/heat/test_swiftsignal.py b/heat/tests/openstack/heat/test_swiftsignal.py |
50 | +index c3d2db0d6..427a87e79 100644 |
51 | +--- a/heat/tests/openstack/heat/test_swiftsignal.py |
52 | ++++ b/heat/tests/openstack/heat/test_swiftsignal.py |
53 | +@@ -129,7 +129,8 @@ class SwiftSignalHandleTest(common.HeatTestCase): |
54 | + obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) |
55 | + mock_name.return_value = obj_name |
56 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 2) |
57 | +- mock_swift_object.get_object.return_value = (obj_header, '{"id": "1"}') |
58 | ++ mock_swift_object.get_object.return_value = (obj_header, |
59 | ++ b'{"id": "1"}') |
60 | + |
61 | + st.create() |
62 | + handle = st.resources['test_wait_condition_handle'] |
63 | +@@ -311,7 +312,7 @@ class SwiftSignalTest(common.HeatTestCase): |
64 | + obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) |
65 | + mock_name.return_value = obj_name |
66 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 2) |
67 | +- mock_swift_object.get_object.return_value = (obj_header, '') |
68 | ++ mock_swift_object.get_object.return_value = (obj_header, b'') |
69 | + |
70 | + st.create() |
71 | + self.assertEqual(('CREATE', 'COMPLETE'), st.state) |
72 | +@@ -358,13 +359,13 @@ class SwiftSignalTest(common.HeatTestCase): |
73 | + mock_name.return_value = obj_name |
74 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 2) |
75 | + mock_swift_object.get_object.side_effect = ( |
76 | +- (obj_header, json.dumps({'id': 1})), |
77 | +- (obj_header, json.dumps({'id': 1})), |
78 | +- (obj_header, json.dumps({'id': 1})), |
79 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
80 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
81 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
82 | + |
83 | +- (obj_header, json.dumps({'id': 1})), |
84 | +- (obj_header, json.dumps({'id': 2})), |
85 | +- (obj_header, json.dumps({'id': 3})), |
86 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
87 | ++ (obj_header, json.dumps({'id': 2}).encode()), |
88 | ++ (obj_header, json.dumps({'id': 3}).encode()), |
89 | + ) |
90 | + |
91 | + st.create() |
92 | +@@ -385,8 +386,8 @@ class SwiftSignalTest(common.HeatTestCase): |
93 | + obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) |
94 | + mock_name.return_value = obj_name |
95 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 2) |
96 | +- mock_swift_object.get_object.return_value = (obj_header, |
97 | +- json.dumps({'id': 1})) |
98 | ++ body = json.dumps({'id': 1}).encode() |
99 | ++ mock_swift_object.get_object.return_value = (obj_header, body) |
100 | + |
101 | + time_now = timeutils.utcnow() |
102 | + time_series = [datetime.timedelta(0, t) + time_now |
103 | +@@ -419,9 +420,9 @@ class SwiftSignalTest(common.HeatTestCase): |
104 | + mock_name.return_value = obj_name |
105 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 2) |
106 | + mock_swift_object.get_object.side_effect = ( |
107 | +- (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"})), |
108 | +- (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"})), |
109 | +- (obj_header, json.dumps({'id': 2, 'status': "SUCCESS"})), |
110 | ++ (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"}).encode()), |
111 | ++ (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"}).encode()), |
112 | ++ (obj_header, json.dumps({'id': 2, 'status': "SUCCESS"}).encode()), |
113 | + ) |
114 | + |
115 | + st.create() |
116 | +@@ -445,15 +446,15 @@ class SwiftSignalTest(common.HeatTestCase): |
117 | + mock_swift_object.get_object.side_effect = ( |
118 | + # Create |
119 | + (obj_header, json.dumps({'id': 1, 'status': "FAILURE", |
120 | +- 'reason': "foo"})), |
121 | ++ 'reason': "foo"}).encode()), |
122 | + (obj_header, json.dumps({'id': 2, 'status': "FAILURE", |
123 | +- 'reason': "bar"})), |
124 | ++ 'reason': "bar"}).encode()), |
125 | + |
126 | + # SwiftSignalFailure |
127 | + (obj_header, json.dumps({'id': 1, 'status': "FAILURE", |
128 | +- 'reason': "foo"})), |
129 | ++ 'reason': "foo"}).encode()), |
130 | + (obj_header, json.dumps({'id': 2, 'status': "FAILURE", |
131 | +- 'reason': "bar"})), |
132 | ++ 'reason': "bar"}).encode()), |
133 | + ) |
134 | + |
135 | + st.create() |
136 | +@@ -480,14 +481,14 @@ class SwiftSignalTest(common.HeatTestCase): |
137 | + |
138 | + mock_swift_object.get_object.side_effect = ( |
139 | + # st create |
140 | +- (obj_header, json.dumps({'id': 1, 'data': "foo"})), |
141 | +- (obj_header, json.dumps({'id': 2, 'data': "bar"})), |
142 | +- (obj_header, json.dumps({'id': 3, 'data': "baz"})), |
143 | ++ (obj_header, json.dumps({'id': 1, 'data': "foo"}).encode()), |
144 | ++ (obj_header, json.dumps({'id': 2, 'data': "bar"}).encode()), |
145 | ++ (obj_header, json.dumps({'id': 3, 'data': "baz"}).encode()), |
146 | + |
147 | + # FnGetAtt call |
148 | +- (obj_header, json.dumps({'id': 1, 'data': "foo"})), |
149 | +- (obj_header, json.dumps({'id': 2, 'data': "bar"})), |
150 | +- (obj_header, json.dumps({'id': 3, 'data': "baz"})), |
151 | ++ (obj_header, json.dumps({'id': 1, 'data': "foo"}).encode()), |
152 | ++ (obj_header, json.dumps({'id': 2, 'data': "bar"}).encode()), |
153 | ++ (obj_header, json.dumps({'id': 3, 'data': "baz"}).encode()), |
154 | + ) |
155 | + |
156 | + st.create() |
157 | +@@ -515,15 +516,15 @@ class SwiftSignalTest(common.HeatTestCase): |
158 | + mock_swift_object.get_object.side_effect = ( |
159 | + # st create |
160 | + (obj_header, json.dumps({'data': "foo", 'reason': "bar", |
161 | +- 'status': "SUCCESS"})), |
162 | ++ 'status': "SUCCESS"}).encode()), |
163 | + (obj_header, json.dumps({'data': "dog", 'reason': "cat", |
164 | +- 'status': "SUCCESS"})), |
165 | ++ 'status': "SUCCESS"}).encode()), |
166 | + |
167 | + # FnGetAtt call |
168 | + (obj_header, json.dumps({'data': "foo", 'reason': "bar", |
169 | +- 'status': "SUCCESS"})), |
170 | ++ 'status': "SUCCESS"}).encode()), |
171 | + (obj_header, json.dumps({'data': "dog", 'reason': "cat", |
172 | +- 'status': "SUCCESS"})), |
173 | ++ 'status': "SUCCESS"}).encode()), |
174 | + ) |
175 | + |
176 | + st.create() |
177 | +@@ -549,12 +550,12 @@ class SwiftSignalTest(common.HeatTestCase): |
178 | + |
179 | + mock_swift_object.get_object.side_effect = ( |
180 | + # st create |
181 | +- (obj_header, ''), |
182 | +- (obj_header, ''), |
183 | ++ (obj_header, b''), |
184 | ++ (obj_header, b''), |
185 | + |
186 | + # FnGetAtt call |
187 | +- (obj_header, ''), |
188 | +- (obj_header, ''), |
189 | ++ (obj_header, b''), |
190 | ++ (obj_header, b''), |
191 | + ) |
192 | + |
193 | + st.create() |
194 | +@@ -579,7 +580,7 @@ class SwiftSignalTest(common.HeatTestCase): |
195 | + mock_name.return_value = obj_name |
196 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 1) |
197 | + mock_swift_object.get_object.return_value = ( |
198 | +- obj_header, json.dumps({'status': 'SUCCESS'})) |
199 | ++ obj_header, json.dumps({'status': 'SUCCESS'}).encode()) |
200 | + |
201 | + st.create() |
202 | + self.assertEqual(['SUCCESS', 'SUCCESS'], wc.get_status()) |
203 | +@@ -605,7 +606,7 @@ class SwiftSignalTest(common.HeatTestCase): |
204 | + obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) |
205 | + mock_name.return_value = obj_name |
206 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 1) |
207 | +- mock_swift_object.get_object.return_value = (obj_header, '') |
208 | ++ mock_swift_object.get_object.return_value = (obj_header, b'') |
209 | + |
210 | + st.create() |
211 | + self.assertEqual(['SUCCESS', 'SUCCESS'], wc.get_status()) |
212 | +@@ -632,7 +633,7 @@ class SwiftSignalTest(common.HeatTestCase): |
213 | + mock_name.return_value = obj_name |
214 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 1) |
215 | + mock_swift_object.get_object.return_value = ( |
216 | +- obj_header, json.dumps({'id': 1, 'status': "SUCCESS"})) |
217 | ++ obj_header, json.dumps({'id': 1, 'status': "SUCCESS"}).encode()) |
218 | + |
219 | + st.create() |
220 | + self.assertEqual(['SUCCESS'], wc.get_status()) |
221 | +@@ -657,7 +658,7 @@ class SwiftSignalTest(common.HeatTestCase): |
222 | + mock_name.return_value = obj_name |
223 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 1) |
224 | + mock_swift_object.get_object.return_value = ( |
225 | +- obj_header, json.dumps({'id': 1, 'status': "FAILURE"})) |
226 | ++ obj_header, json.dumps({'id': 1, 'status': "FAILURE"}).encode()) |
227 | + |
228 | + st.create() |
229 | + self.assertEqual(('CREATE', 'FAILED'), st.state) |
230 | +@@ -684,8 +685,8 @@ class SwiftSignalTest(common.HeatTestCase): |
231 | + |
232 | + mock_swift_object.get_object.side_effect = ( |
233 | + # st create |
234 | +- (obj_header, ''), |
235 | +- (obj_header, ''), |
236 | ++ (obj_header, b''), |
237 | ++ (obj_header, b''), |
238 | + ) |
239 | + |
240 | + st.create() |
241 | +@@ -710,8 +711,8 @@ class SwiftSignalTest(common.HeatTestCase): |
242 | + |
243 | + mock_swift_object.get_object.side_effect = ( |
244 | + # st create |
245 | +- (obj_header, ''), |
246 | +- (obj_header, ''), |
247 | ++ (obj_header, b''), |
248 | ++ (obj_header, b''), |
249 | + ) |
250 | + |
251 | + st.create() |
252 | +@@ -740,8 +741,8 @@ class SwiftSignalTest(common.HeatTestCase): |
253 | + |
254 | + mock_swift_object.get_object.side_effect = ( |
255 | + # st create |
256 | +- (obj_header, ''), |
257 | +- (obj_header, ''), |
258 | ++ (obj_header, b''), |
259 | ++ (obj_header, b''), |
260 | + ) |
261 | + |
262 | + st.create() |
263 | +@@ -771,8 +772,8 @@ class SwiftSignalTest(common.HeatTestCase): |
264 | + |
265 | + mock_swift_object.get_object.side_effect = ( |
266 | + # st create |
267 | +- (obj_header, '{"status": "SUCCESS"'), |
268 | +- (obj_header, '{"status": "FAI'), |
269 | ++ (obj_header, b'{"status": "SUCCESS"'), |
270 | ++ (obj_header, b'{"status": "FAI'), |
271 | + ) |
272 | + |
273 | + st.create() |
274 | +@@ -799,7 +800,7 @@ class SwiftSignalTest(common.HeatTestCase): |
275 | + mock_swift_object.get_container.return_value = cont_index(obj_name, 1) |
276 | + |
277 | + mock_swift_object.get_object.return_value = ( |
278 | +- obj_header, '{"status": "BOO"}') |
279 | ++ obj_header, b'{"status": "BOO"}') |
280 | + |
281 | + st.create() |
282 | + self.assertEqual(('CREATE', 'FAILED'), st.state) |
283 | +@@ -826,9 +827,10 @@ class SwiftSignalTest(common.HeatTestCase): |
284 | + (container_header, []), # The user deleted the objects |
285 | + ) |
286 | + mock_swift_object.get_object.side_effect = ( |
287 | +- (obj_header, json.dumps({'id': 1})), # Objects there during create |
288 | +- (obj_header, json.dumps({'id': 2})), |
289 | +- (obj_header, json.dumps({'id': 3})), |
290 | ++ # Objects there during create |
291 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
292 | ++ (obj_header, json.dumps({'id': 2}).encode()), |
293 | ++ (obj_header, json.dumps({'id': 3}).encode()), |
294 | + ) |
295 | + |
296 | + st.create() |
297 | +@@ -859,8 +861,8 @@ class SwiftSignalTest(common.HeatTestCase): |
298 | + cont_index(obj_name, 1), |
299 | + ) |
300 | + mock_swift_object.get_object.side_effect = ( |
301 | +- (obj_header, json.dumps({'id': 1})), |
302 | +- (obj_header, json.dumps({'id': 2})), |
303 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
304 | ++ (obj_header, json.dumps({'id': 2}).encode()), |
305 | + ) |
306 | + |
307 | + st.create() |
308 | +@@ -886,9 +888,10 @@ class SwiftSignalTest(common.HeatTestCase): |
309 | + http_status=404) # User deleted |
310 | + ] |
311 | + mock_swift_object.get_object.side_effect = ( |
312 | +- (obj_header, json.dumps({'id': 1})), # Objects there during create |
313 | +- (obj_header, json.dumps({'id': 2})), |
314 | +- (obj_header, json.dumps({'id': 3})), |
315 | ++ # Objects there during create |
316 | ++ (obj_header, json.dumps({'id': 1}).encode()), |
317 | ++ (obj_header, json.dumps({'id': 2}).encode()), |
318 | ++ (obj_header, json.dumps({'id': 3}).encode()), |
319 | + ) |
320 | + |
321 | + st.create() |
322 | +@@ -914,8 +917,8 @@ class SwiftSignalTest(common.HeatTestCase): |
323 | + mock_swift_object.get_object.side_effect = ( |
324 | + swiftclient_client.ClientException( |
325 | + "Object %s not found" % obj_name, http_status=404), |
326 | +- (obj_header, '{"id": 1}'), |
327 | +- (obj_header, '{"id": 2}'), |
328 | ++ (obj_header, b'{"id": 1}'), |
329 | ++ (obj_header, b'{"id": 2}'), |
330 | + ) |
331 | + |
332 | + st.create() |
333 | +-- |
334 | +2.34.1 |
335 | + |
336 | diff --git a/debian/patches/series b/debian/patches/series |
337 | index 7e82124..533ddfa 100644 |
338 | --- a/debian/patches/series |
339 | +++ b/debian/patches/series |
340 | @@ -1,3 +1,4 @@ |
341 | drop-zun.patch |
342 | sudoers_patch.patch |
343 | honor-hidden-parameter.patch |
344 | +lp2012073.patch |