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