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

Subscribers

People subscribed via source and target branches