From e4681d7360e4902341d599001957abcf2a8e85a4 Mon Sep 17 00:00:00 2001 From: Rafael Monnerat <rafael@nexedi.com> Date: Thu, 13 Feb 2025 18:07:28 +0100 Subject: [PATCH] py3: Fixup some py3 bytes x str inconsistencies --- ...erp5.SlapOSTestCaseDefaultScenarioMixin.py | 16 ++++++------ .../portal_components/tool.erp5.SlapTool.py | 26 ++++++++++--------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.SlapOSTestCaseDefaultScenarioMixin.py b/master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.SlapOSTestCaseDefaultScenarioMixin.py index 3264862c8..ca68ba860 100644 --- a/master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.SlapOSTestCaseDefaultScenarioMixin.py +++ b/master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.SlapOSTestCaseDefaultScenarioMixin.py @@ -25,7 +25,7 @@ from erp5.component.test.testSlapOSCloudSecurityGroup import TestSlapOSSecurityM from erp5.component.test.SlapOSTestCaseMixin import changeSkin import re from slapos.util import dumps, loads -from Products.ERP5Type.Utils import str2bytes +from Products.ERP5Type.Utils import str2bytes, bytes2str from AccessControl.SecurityManagement import getSecurityManager, \ setSecurityManager @@ -229,7 +229,7 @@ class DefaultScenarioMixin(TestSlapOSSecurityMixin): try: self.login(compute_node.getUserId()) self.portal.portal_slap.loadComputerConfigurationFromXML( - dumps(compute_node_dict)) + bytes2str(dumps(compute_node_dict))) self.tic() self.assertEqual(partition_count, len(compute_node.contentValues(portal_type='Compute Partition'))) @@ -276,9 +276,9 @@ class DefaultScenarioMixin(TestSlapOSSecurityMixin): if partition._requested_state == 'destroyed' \ and partition._need_modification == 1: self.portal.portal_slap.destroyedComputerPartition(compute_node.getReference(), - partition._partition_id.encode("UTF-8") + partition._partition_id ) - destroyed_partition_id_list.append(partition._partition_id.encode("UTF-8")) + destroyed_partition_id_list.append(partition._partition_id) finally: setSecurityManager(sm) self.tic() @@ -306,10 +306,10 @@ class DefaultScenarioMixin(TestSlapOSSecurityMixin): and partition._need_modification == 1: instance_reference = partition._instance_guid.encode('UTF-8') ip_list = partition._parameter_dict['ip_list'] - connection_xml = dumps(dict( + connection_xml = bytes2str(dumps(dict( url_1 = 'http://%s/' % ip_list[0][1], url_2 = 'http://%s/' % ip_list[1][1], - )) + ))) self.login() instance_user_id = self.portal.portal_catalog.getResultValue( reference=instance_reference, portal_type="Software Instance").getUserId() @@ -324,10 +324,10 @@ class DefaultScenarioMixin(TestSlapOSSecurityMixin): ) for slave in partition._parameter_dict['slave_instance_list']: slave_reference = slave['slave_reference'] - connection_xml = dumps(dict( + connection_xml = bytes2str(dumps(dict( url_1 = 'http://%s/%s' % (ip_list[0][1], slave_reference), url_2 = 'http://%s/%s' % (ip_list[1][1], slave_reference) - )) + ))) self.portal.portal_slap.setComputerPartitionConnectionXml( computer_id=compute_node_reference, computer_partition_id=partition._partition_id, diff --git a/master/bt5/slapos_slap_tool/ToolComponentTemplateItem/portal_components/tool.erp5.SlapTool.py b/master/bt5/slapos_slap_tool/ToolComponentTemplateItem/portal_components/tool.erp5.SlapTool.py index bc2d13ab9..583d803ee 100644 --- a/master/bt5/slapos_slap_tool/ToolComponentTemplateItem/portal_components/tool.erp5.SlapTool.py +++ b/master/bt5/slapos_slap_tool/ToolComponentTemplateItem/portal_components/tool.erp5.SlapTool.py @@ -28,7 +28,7 @@ # ############################################################################## -from Products.ERP5Type.Utils import str2unicode +from Products.ERP5Type.Utils import str2unicode, bytes2str, str2bytes from AccessControl import ClassSecurityInfo from AccessControl import Unauthorized from OFS.Traversable import NotFound @@ -75,7 +75,7 @@ except ImportError: from zLOG import LOG, INFO -from six import StringIO +import six import pkg_resources from DateTime import DateTime from App.Common import rfc1123_date @@ -112,13 +112,15 @@ def convertToREST(function): raise Unauthorized self.REQUEST.response.setHeader('Content-Type', 'text/xml; charset=utf-8') + if isinstance(retval, bytes): + return '%s' % bytes2str(retval) return '%s' % retval wrapper.__doc__ = function.__doc__ return wrapper def castToStr(dict_kw): instance = etree.Element('instance') - for _id, _value in dict_kw.iteritems(): + for _id, _value in six.iteritems(dict_kw): # cast everything to string. text = _value if not isinstance(_value, str): @@ -690,7 +692,7 @@ class SlapTool(BaseTool): 'loadComputerConfigurationFromXML') def loadComputerConfigurationFromXML(self, xml): "Load the given xml as configuration for the compute_node object" - compute_node_dict = loads(xml) + compute_node_dict = loads(str2bytes(xml)) compute_node = self.getPortalObject().portal_catalog.getComputeNodeObject(compute_node_dict['reference']) compute_node.ComputeNode_updateFromDict(compute_node_dict) return 'Content properly posted.' @@ -771,11 +773,11 @@ class SlapTool(BaseTool): def _validateXML(self, to_be_validated, xsd_model): """Will validate the xml file""" #We parse the XSD model - xsd_model = StringIO(xsd_model) + xsd_model = six.StringIO(xsd_model) xmlschema_doc = etree.parse(xsd_model) xmlschema = etree.XMLSchema(xmlschema_doc) - string_to_validate = StringIO(to_be_validated) + string_to_validate = six.StringIO(to_be_validated) try: document = etree.parse(string_to_validate) @@ -927,7 +929,7 @@ class SlapTool(BaseTool): compute_node_id, compute_partition_id, slave_reference) - connection_xml = dict2xml(loads(connection_xml)) + connection_xml = dict2xml(loads(str2bytes(connection_xml))) if not software_instance.isLastData(value=connection_xml): software_instance.updateConnection( connection_xml=connection_xml, @@ -952,19 +954,19 @@ class SlapTool(BaseTool): In any other case returns not important data and HTTP code is 403 Forbidden """ if state: - state = loads(state) + state = loads(str2bytes(state)) if state is None: state = 'started' if shared_xml is not _MARKER: - shared = loads(shared_xml) + shared = loads(str2bytes(shared_xml)) else: shared = False if partition_parameter_xml: - partition_parameter_kw = loads(partition_parameter_xml) + partition_parameter_kw = loads(str2bytes(partition_parameter_xml)) else: partition_parameter_kw = dict() if filter_xml: - filter_kw = loads(filter_xml) + filter_kw = loads(str2bytes(filter_xml)) if software_type == 'pull-backup' and not 'retention_delay' in filter_kw: filter_kw['retention_delay'] = 7.0 else: @@ -1109,7 +1111,7 @@ class SlapTool(BaseTool): slap_software_release._known_state = software_release_dict['_known_state'] slap_compute_node._software_release_list.append(slap_software_release) - return dumps(slap_compute_node) + return bytes2str(dumps(slap_compute_node)) def _getSoftwareInstanceForComputePartition(self, compute_node_id, compute_partition_id, slave_reference=None): -- 2.30.9