diff options
-rw-r--r-- | .zuul.yaml | 4 | ||||
-rw-r--r-- | heat/common/messaging.py | 4 | ||||
-rw-r--r-- | heat/db/sqlalchemy/api.py | 2 | ||||
-rw-r--r-- | heat/engine/resources/openstack/heat/swiftsignal.py | 2 | ||||
-rw-r--r-- | heat/engine/resources/stack_resource.py | 2 | ||||
-rw-r--r-- | heat/tests/openstack/heat/test_swiftsignal.py | 111 | ||||
-rw-r--r-- | requirements.txt | 4 |
7 files changed, 67 insertions, 62 deletions
diff --git a/.zuul.yaml b/.zuul.yaml index 233dc0d95..1ae750731 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -184,8 +184,8 @@ queue: heat templates: - openstack-cover-jobs - - openstack-python3-zed-jobs - - openstack-python3-zed-jobs-arm64 + - openstack-python3-jobs + - openstack-python3-jobs-arm64 - periodic-stable-jobs - publish-openstack-docs-pti - check-requirements diff --git a/heat/common/messaging.py b/heat/common/messaging.py index 44ef904f5..8c9307034 100644 --- a/heat/common/messaging.py +++ b/heat/common/messaging.py @@ -136,8 +136,8 @@ def get_rpc_client(**kwargs): target = oslo_messaging.Target(**kwargs) serializer = RequestContextSerializer( oslo_messaging.JsonPayloadSerializer()) - return oslo_messaging.RPCClient(TRANSPORT, target, - serializer=serializer) + return oslo_messaging.get_rpc_client( + TRANSPORT, target, serializer=serializer) def get_notifier(publisher_id): diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py index 7ca61a756..df627d43c 100644 --- a/heat/db/sqlalchemy/api.py +++ b/heat/db/sqlalchemy/api.py @@ -544,7 +544,7 @@ def resource_get_all_active_by_stack(context, stack_id): results = context.session.query(models.Resource).filter_by( stack_id=stack_id).filter( - models.Resource.id.notin_(subquery.as_scalar()) + models.Resource.id.notin_(subquery.scalar_subquery()) ).options(orm.joinedload("data")).all() return dict((res.id, res) for res in results) diff --git a/heat/engine/resources/openstack/heat/swiftsignal.py b/heat/engine/resources/openstack/heat/swiftsignal.py index dc78b9310..295f6ae4f 100644 --- a/heat/engine/resources/openstack/heat/swiftsignal.py +++ b/heat/engine/resources/openstack/heat/swiftsignal.py @@ -267,6 +267,8 @@ class SwiftSignal(resource.Resource): continue body = signal[1] + if isinstance(body, bytes): + body = body.decode() if body == swift.IN_PROGRESS: # Ignore the initial object continue if body == "": diff --git a/heat/engine/resources/stack_resource.py b/heat/engine/resources/stack_resource.py index 5b491888a..d7129dad0 100644 --- a/heat/engine/resources/stack_resource.py +++ b/heat/engine/resources/stack_resource.py @@ -78,7 +78,7 @@ class StackResource(resource.Resource): except Exception as ex: path = "%s<%s>" % (self.name, self.template_url) raise exception.StackValidationFailed( - ex, path=[self.stack.t.RESOURCES, path]) + error=ex, path=[self.stack.t.RESOURCES, path]) @property def template_url(self): diff --git a/heat/tests/openstack/heat/test_swiftsignal.py b/heat/tests/openstack/heat/test_swiftsignal.py index 64a15df1b..8fc592e9d 100644 --- a/heat/tests/openstack/heat/test_swiftsignal.py +++ b/heat/tests/openstack/heat/test_swiftsignal.py @@ -129,7 +129,8 @@ class SwiftSignalHandleTest(common.HeatTestCase): obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 2) - mock_swift_object.get_object.return_value = (obj_header, '{"id": "1"}') + mock_swift_object.get_object.return_value = (obj_header, + b'{"id": "1"}') st.create() handle = st.resources['test_wait_condition_handle'] @@ -311,7 +312,7 @@ class SwiftSignalTest(common.HeatTestCase): obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 2) - mock_swift_object.get_object.return_value = (obj_header, '') + mock_swift_object.get_object.return_value = (obj_header, b'') st.create() self.assertEqual(('CREATE', 'COMPLETE'), st.state) @@ -358,13 +359,13 @@ class SwiftSignalTest(common.HeatTestCase): mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 2) mock_swift_object.get_object.side_effect = ( - (obj_header, json.dumps({'id': 1})), - (obj_header, json.dumps({'id': 1})), - (obj_header, json.dumps({'id': 1})), + (obj_header, json.dumps({'id': 1}).encode()), + (obj_header, json.dumps({'id': 1}).encode()), + (obj_header, json.dumps({'id': 1}).encode()), - (obj_header, json.dumps({'id': 1})), - (obj_header, json.dumps({'id': 2})), - (obj_header, json.dumps({'id': 3})), + (obj_header, json.dumps({'id': 1}).encode()), + (obj_header, json.dumps({'id': 2}).encode()), + (obj_header, json.dumps({'id': 3}).encode()), ) st.create() @@ -385,8 +386,8 @@ class SwiftSignalTest(common.HeatTestCase): obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 2) - mock_swift_object.get_object.return_value = (obj_header, - json.dumps({'id': 1})) + body = json.dumps({'id': 1}).encode() + mock_swift_object.get_object.return_value = (obj_header, body) time_now = timeutils.utcnow() time_series = [datetime.timedelta(0, t) + time_now @@ -419,9 +420,9 @@ class SwiftSignalTest(common.HeatTestCase): mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 2) mock_swift_object.get_object.side_effect = ( - (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"})), - (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"})), - (obj_header, json.dumps({'id': 2, 'status': "SUCCESS"})), + (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"}).encode()), + (obj_header, json.dumps({'id': 1, 'status': "SUCCESS"}).encode()), + (obj_header, json.dumps({'id': 2, 'status': "SUCCESS"}).encode()), ) st.create() @@ -445,15 +446,15 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # Create (obj_header, json.dumps({'id': 1, 'status': "FAILURE", - 'reason': "foo"})), + 'reason': "foo"}).encode()), (obj_header, json.dumps({'id': 2, 'status': "FAILURE", - 'reason': "bar"})), + 'reason': "bar"}).encode()), # SwiftSignalFailure (obj_header, json.dumps({'id': 1, 'status': "FAILURE", - 'reason': "foo"})), + 'reason': "foo"}).encode()), (obj_header, json.dumps({'id': 2, 'status': "FAILURE", - 'reason': "bar"})), + 'reason': "bar"}).encode()), ) st.create() @@ -480,14 +481,14 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create - (obj_header, json.dumps({'id': 1, 'data': "foo"})), - (obj_header, json.dumps({'id': 2, 'data': "bar"})), - (obj_header, json.dumps({'id': 3, 'data': "baz"})), + (obj_header, json.dumps({'id': 1, 'data': "foo"}).encode()), + (obj_header, json.dumps({'id': 2, 'data': "bar"}).encode()), + (obj_header, json.dumps({'id': 3, 'data': "baz"}).encode()), # FnGetAtt call - (obj_header, json.dumps({'id': 1, 'data': "foo"})), - (obj_header, json.dumps({'id': 2, 'data': "bar"})), - (obj_header, json.dumps({'id': 3, 'data': "baz"})), + (obj_header, json.dumps({'id': 1, 'data': "foo"}).encode()), + (obj_header, json.dumps({'id': 2, 'data': "bar"}).encode()), + (obj_header, json.dumps({'id': 3, 'data': "baz"}).encode()), ) st.create() @@ -515,15 +516,15 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create (obj_header, json.dumps({'data': "foo", 'reason': "bar", - 'status': "SUCCESS"})), + 'status': "SUCCESS"}).encode()), (obj_header, json.dumps({'data': "dog", 'reason': "cat", - 'status': "SUCCESS"})), + 'status': "SUCCESS"}).encode()), # FnGetAtt call (obj_header, json.dumps({'data': "foo", 'reason': "bar", - 'status': "SUCCESS"})), + 'status': "SUCCESS"}).encode()), (obj_header, json.dumps({'data': "dog", 'reason': "cat", - 'status': "SUCCESS"})), + 'status': "SUCCESS"}).encode()), ) st.create() @@ -549,12 +550,12 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create - (obj_header, ''), - (obj_header, ''), + (obj_header, b''), + (obj_header, b''), # FnGetAtt call - (obj_header, ''), - (obj_header, ''), + (obj_header, b''), + (obj_header, b''), ) st.create() @@ -579,7 +580,7 @@ class SwiftSignalTest(common.HeatTestCase): mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 1) mock_swift_object.get_object.return_value = ( - obj_header, json.dumps({'status': 'SUCCESS'})) + obj_header, json.dumps({'status': 'SUCCESS'}).encode()) st.create() self.assertEqual(['SUCCESS', 'SUCCESS'], wc.get_status()) @@ -605,7 +606,7 @@ class SwiftSignalTest(common.HeatTestCase): obj_name = "%s-%s-abcdefghijkl" % (st.name, handle.name) mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 1) - mock_swift_object.get_object.return_value = (obj_header, '') + mock_swift_object.get_object.return_value = (obj_header, b'') st.create() self.assertEqual(['SUCCESS', 'SUCCESS'], wc.get_status()) @@ -632,7 +633,7 @@ class SwiftSignalTest(common.HeatTestCase): mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 1) mock_swift_object.get_object.return_value = ( - obj_header, json.dumps({'id': 1, 'status': "SUCCESS"})) + obj_header, json.dumps({'id': 1, 'status': "SUCCESS"}).encode()) st.create() self.assertEqual(['SUCCESS'], wc.get_status()) @@ -657,7 +658,7 @@ class SwiftSignalTest(common.HeatTestCase): mock_name.return_value = obj_name mock_swift_object.get_container.return_value = cont_index(obj_name, 1) mock_swift_object.get_object.return_value = ( - obj_header, json.dumps({'id': 1, 'status': "FAILURE"})) + obj_header, json.dumps({'id': 1, 'status': "FAILURE"}).encode()) st.create() self.assertEqual(('CREATE', 'FAILED'), st.state) @@ -684,8 +685,8 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create - (obj_header, ''), - (obj_header, ''), + (obj_header, b''), + (obj_header, b''), ) st.create() @@ -710,8 +711,8 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create - (obj_header, ''), - (obj_header, ''), + (obj_header, b''), + (obj_header, b''), ) st.create() @@ -741,8 +742,8 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create - (obj_header, ''), - (obj_header, ''), + (obj_header, b''), + (obj_header, b''), ) st.create() @@ -772,8 +773,8 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( # st create - (obj_header, '{"status": "SUCCESS"'), - (obj_header, '{"status": "FAI'), + (obj_header, b'{"status": "SUCCESS"'), + (obj_header, b'{"status": "FAI'), ) st.create() @@ -800,7 +801,7 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_container.return_value = cont_index(obj_name, 1) mock_swift_object.get_object.return_value = ( - obj_header, '{"status": "BOO"}') + obj_header, b'{"status": "BOO"}') st.create() self.assertEqual(('CREATE', 'FAILED'), st.state) @@ -827,9 +828,10 @@ class SwiftSignalTest(common.HeatTestCase): (container_header, []), # The user deleted the objects ) mock_swift_object.get_object.side_effect = ( - (obj_header, json.dumps({'id': 1})), # Objects there during create - (obj_header, json.dumps({'id': 2})), - (obj_header, json.dumps({'id': 3})), + # Objects there during create + (obj_header, json.dumps({'id': 1}).encode()), + (obj_header, json.dumps({'id': 2}).encode()), + (obj_header, json.dumps({'id': 3}).encode()), ) st.create() @@ -860,8 +862,8 @@ class SwiftSignalTest(common.HeatTestCase): cont_index(obj_name, 1), ) mock_swift_object.get_object.side_effect = ( - (obj_header, json.dumps({'id': 1})), - (obj_header, json.dumps({'id': 2})), + (obj_header, json.dumps({'id': 1}).encode()), + (obj_header, json.dumps({'id': 2}).encode()), ) st.create() @@ -887,9 +889,10 @@ class SwiftSignalTest(common.HeatTestCase): http_status=404) # User deleted ] mock_swift_object.get_object.side_effect = ( - (obj_header, json.dumps({'id': 1})), # Objects there during create - (obj_header, json.dumps({'id': 2})), - (obj_header, json.dumps({'id': 3})), + # Objects there during create + (obj_header, json.dumps({'id': 1}).encode()), + (obj_header, json.dumps({'id': 2}).encode()), + (obj_header, json.dumps({'id': 3}).encode()), ) st.create() @@ -915,8 +918,8 @@ class SwiftSignalTest(common.HeatTestCase): mock_swift_object.get_object.side_effect = ( swiftclient_client.ClientException( "Object %s not found" % obj_name, http_status=404), - (obj_header, '{"id": 1}'), - (obj_header, '{"id": 2}'), + (obj_header, b'{"id": 1}'), + (obj_header, b'{"id": 2}'), ) st.create() diff --git a/requirements.txt b/requirements.txt index 457724754..18150cfc4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ oslo.context>=2.22.0 # Apache-2.0 oslo.db>=6.0.0 # Apache-2.0 oslo.i18n>=3.20.0 # Apache-2.0 oslo.log>=4.3.0 # Apache-2.0 -oslo.messaging>=5.29.0 # Apache-2.0 +oslo.messaging>=14.1.0 # Apache-2.0 oslo.middleware>=3.31.0 # Apache-2.0 oslo.policy>=3.7.0 # Apache-2.0 oslo.reports>=1.18.0 # Apache-2.0 @@ -65,7 +65,7 @@ PyYAML>=5.1 # MIT requests>=2.23.0 # Apache-2.0 tenacity>=6.1.0 # Apache-2.0 Routes>=2.3.1 # MIT -SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT +SQLAlchemy>=1.4.0 # MIT sqlalchemy-migrate>=0.13.0 # Apache-2.0 stevedore>=3.1.0 # Apache-2.0 WebOb>=1.7.1 # MIT |