fix msg_pack (#57571)

* remove < 1.0.0

* update msgpack

* fix msg_test

* fix .decode

* fix .decode 2

* fix failing tests

* undo decode 2

* fix strict_map_key

* fix tab error

* add back raw True

* fix upack kwargs

* add raw false

* move raw false

* raw=false move

* clean up

Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
This commit is contained in:
Charles McMarrow 2020-07-14 19:20:55 -07:00 committed by GitHub
parent 8309518f9d
commit e85eea8178
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 58 additions and 38 deletions

View file

@ -13,7 +13,7 @@ jinja2==2.10.1
linode-python==1.1.1
Mako==1.0.7
markupsafe==1.1.1
msgpack==0.5.6
msgpack==1.0.0
psutil==5.6.6
pyasn1==0.4.8
pycparser==2.19

View file

@ -1,5 +1,5 @@
Jinja2
msgpack>=0.5,!=0.5.5,<1.0.0
msgpack>=0.5,!=0.5.5
PyYAML
MarkupSafe
requests>=1.0.0

View file

@ -65,7 +65,7 @@ markupsafe==1.1.1
mock==3.0.5 ; python_version < "3.6"
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.0 # via junos-eznc

View file

@ -63,7 +63,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.0 # via junos-eznc

View file

@ -149,7 +149,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
msrest==0.6.14 # via azure-applicationinsights, azure-eventgrid, azure-keyvault, azure-loganalytics, azure-mgmt-cdn, azure-mgmt-compute, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-dns, azure-mgmt-eventhub, azure-mgmt-keyvault, azure-mgmt-media, azure-mgmt-network, azure-mgmt-rdbms, azure-mgmt-resource, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-servicefabric, msrestazure
msrestazure==0.6.3 # via azure-batch, azure-eventgrid, azure-graphrbac, azure-keyvault, azure-mgmt-advisor, azure-mgmt-applicationinsights, azure-mgmt-authorization, azure-mgmt-batch, azure-mgmt-batchai, azure-mgmt-billing, azure-mgmt-cdn, azure-mgmt-cognitiveservices, azure-mgmt-commerce, azure-mgmt-compute, azure-mgmt-consumption, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-cosmosdb, azure-mgmt-datafactory, azure-mgmt-datalake-analytics, azure-mgmt-datalake-store, azure-mgmt-datamigration, azure-mgmt-devspaces, azure-mgmt-devtestlabs, azure-mgmt-dns, azure-mgmt-eventgrid, azure-mgmt-eventhub, azure-mgmt-hanaonazure, azure-mgmt-iotcentral, azure-mgmt-iothub, azure-mgmt-iothubprovisioningservices, azure-mgmt-keyvault, azure-mgmt-loganalytics, azure-mgmt-logic, azure-mgmt-machinelearningcompute, azure-mgmt-managementgroups, azure-mgmt-managementpartner, azure-mgmt-maps, azure-mgmt-marketplaceordering, azure-mgmt-media, azure-mgmt-monitor, azure-mgmt-msi, azure-mgmt-network, azure-mgmt-notificationhubs, azure-mgmt-policyinsights, azure-mgmt-powerbiembedded, azure-mgmt-rdbms, azure-mgmt-recoveryservices, azure-mgmt-recoveryservicesbackup, azure-mgmt-redis, azure-mgmt-relay, azure-mgmt-reservations, azure-mgmt-resource, azure-mgmt-scheduler, azure-mgmt-search, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-mgmt-sql, azure-mgmt-storage, azure-mgmt-subscription, azure-mgmt-trafficmanager, azure-mgmt-web
ncclient==0.6.4 # via junos-eznc

View file

@ -63,7 +63,7 @@ mock==3.0.5 ; python_version < "3.6"
more-itertools==5.0.0
moto==1.3.7
msgpack-python==0.5.6
msgpack==0.5.6
msgpack==1.0.0
packaging==19.2 # via pytest
patch==1.16
pathlib2==2.3.3 # via pytest

View file

@ -65,7 +65,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.0 # via junos-eznc

View file

@ -63,7 +63,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.0 # via junos-eznc

View file

@ -149,7 +149,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
msrest==0.6.14 # via azure-applicationinsights, azure-eventgrid, azure-keyvault, azure-loganalytics, azure-mgmt-cdn, azure-mgmt-compute, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-dns, azure-mgmt-eventhub, azure-mgmt-keyvault, azure-mgmt-media, azure-mgmt-network, azure-mgmt-rdbms, azure-mgmt-resource, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-servicefabric, msrestazure
msrestazure==0.6.3 # via azure-batch, azure-eventgrid, azure-graphrbac, azure-keyvault, azure-mgmt-advisor, azure-mgmt-applicationinsights, azure-mgmt-authorization, azure-mgmt-batch, azure-mgmt-batchai, azure-mgmt-billing, azure-mgmt-cdn, azure-mgmt-cognitiveservices, azure-mgmt-commerce, azure-mgmt-compute, azure-mgmt-consumption, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-cosmosdb, azure-mgmt-datafactory, azure-mgmt-datalake-analytics, azure-mgmt-datalake-store, azure-mgmt-datamigration, azure-mgmt-devspaces, azure-mgmt-devtestlabs, azure-mgmt-dns, azure-mgmt-eventgrid, azure-mgmt-eventhub, azure-mgmt-hanaonazure, azure-mgmt-iotcentral, azure-mgmt-iothub, azure-mgmt-iothubprovisioningservices, azure-mgmt-keyvault, azure-mgmt-loganalytics, azure-mgmt-logic, azure-mgmt-machinelearningcompute, azure-mgmt-managementgroups, azure-mgmt-managementpartner, azure-mgmt-maps, azure-mgmt-marketplaceordering, azure-mgmt-media, azure-mgmt-monitor, azure-mgmt-msi, azure-mgmt-network, azure-mgmt-notificationhubs, azure-mgmt-policyinsights, azure-mgmt-powerbiembedded, azure-mgmt-rdbms, azure-mgmt-recoveryservices, azure-mgmt-recoveryservicesbackup, azure-mgmt-redis, azure-mgmt-relay, azure-mgmt-reservations, azure-mgmt-resource, azure-mgmt-scheduler, azure-mgmt-search, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-mgmt-sql, azure-mgmt-storage, azure-mgmt-subscription, azure-mgmt-trafficmanager, azure-mgmt-web
ncclient==0.6.4 # via junos-eznc

View file

@ -63,7 +63,7 @@ mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack-python==0.5.6
msgpack==0.5.6
msgpack==1.0.0
packaging==19.2 # via pytest
patch==1.16
pathtools==0.1.2 # via watchdog

View file

@ -63,7 +63,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.0 # via junos-eznc

View file

@ -62,7 +62,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.0 # via junos-eznc

View file

@ -148,7 +148,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
msrest==0.6.14 # via azure-applicationinsights, azure-eventgrid, azure-keyvault, azure-loganalytics, azure-mgmt-cdn, azure-mgmt-compute, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-dns, azure-mgmt-eventhub, azure-mgmt-keyvault, azure-mgmt-media, azure-mgmt-network, azure-mgmt-rdbms, azure-mgmt-resource, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-servicefabric, msrestazure
msrestazure==0.6.3 # via azure-batch, azure-eventgrid, azure-graphrbac, azure-keyvault, azure-mgmt-advisor, azure-mgmt-applicationinsights, azure-mgmt-authorization, azure-mgmt-batch, azure-mgmt-batchai, azure-mgmt-billing, azure-mgmt-cdn, azure-mgmt-cognitiveservices, azure-mgmt-commerce, azure-mgmt-compute, azure-mgmt-consumption, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-cosmosdb, azure-mgmt-datafactory, azure-mgmt-datalake-analytics, azure-mgmt-datalake-store, azure-mgmt-datamigration, azure-mgmt-devspaces, azure-mgmt-devtestlabs, azure-mgmt-dns, azure-mgmt-eventgrid, azure-mgmt-eventhub, azure-mgmt-hanaonazure, azure-mgmt-iotcentral, azure-mgmt-iothub, azure-mgmt-iothubprovisioningservices, azure-mgmt-keyvault, azure-mgmt-loganalytics, azure-mgmt-logic, azure-mgmt-machinelearningcompute, azure-mgmt-managementgroups, azure-mgmt-managementpartner, azure-mgmt-maps, azure-mgmt-marketplaceordering, azure-mgmt-media, azure-mgmt-monitor, azure-mgmt-msi, azure-mgmt-network, azure-mgmt-notificationhubs, azure-mgmt-policyinsights, azure-mgmt-powerbiembedded, azure-mgmt-rdbms, azure-mgmt-recoveryservices, azure-mgmt-recoveryservicesbackup, azure-mgmt-redis, azure-mgmt-relay, azure-mgmt-reservations, azure-mgmt-resource, azure-mgmt-scheduler, azure-mgmt-search, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-mgmt-sql, azure-mgmt-storage, azure-mgmt-subscription, azure-mgmt-trafficmanager, azure-mgmt-web
ncclient==0.6.4 # via junos-eznc

View file

@ -61,7 +61,7 @@ mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack-python==0.5.6
msgpack==0.5.6
msgpack==1.0.0
packaging==19.2 # via pytest
patch==1.16
pathtools==0.1.2 # via watchdog

View file

@ -62,7 +62,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.1 # via junos-eznc

View file

@ -61,7 +61,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.1 # via junos-eznc

View file

@ -148,7 +148,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
msrest==0.6.14 # via azure-applicationinsights, azure-eventgrid, azure-keyvault, azure-loganalytics, azure-mgmt-cdn, azure-mgmt-compute, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-dns, azure-mgmt-eventhub, azure-mgmt-keyvault, azure-mgmt-media, azure-mgmt-network, azure-mgmt-rdbms, azure-mgmt-resource, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-servicefabric, msrestazure
msrestazure==0.6.3 # via azure-batch, azure-eventgrid, azure-graphrbac, azure-keyvault, azure-mgmt-advisor, azure-mgmt-applicationinsights, azure-mgmt-authorization, azure-mgmt-batch, azure-mgmt-batchai, azure-mgmt-billing, azure-mgmt-cdn, azure-mgmt-cognitiveservices, azure-mgmt-commerce, azure-mgmt-compute, azure-mgmt-consumption, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-cosmosdb, azure-mgmt-datafactory, azure-mgmt-datalake-analytics, azure-mgmt-datalake-store, azure-mgmt-datamigration, azure-mgmt-devspaces, azure-mgmt-devtestlabs, azure-mgmt-dns, azure-mgmt-eventgrid, azure-mgmt-eventhub, azure-mgmt-hanaonazure, azure-mgmt-iotcentral, azure-mgmt-iothub, azure-mgmt-iothubprovisioningservices, azure-mgmt-keyvault, azure-mgmt-loganalytics, azure-mgmt-logic, azure-mgmt-machinelearningcompute, azure-mgmt-managementgroups, azure-mgmt-managementpartner, azure-mgmt-maps, azure-mgmt-marketplaceordering, azure-mgmt-media, azure-mgmt-monitor, azure-mgmt-msi, azure-mgmt-network, azure-mgmt-notificationhubs, azure-mgmt-policyinsights, azure-mgmt-powerbiembedded, azure-mgmt-rdbms, azure-mgmt-recoveryservices, azure-mgmt-recoveryservicesbackup, azure-mgmt-redis, azure-mgmt-relay, azure-mgmt-reservations, azure-mgmt-resource, azure-mgmt-scheduler, azure-mgmt-search, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-mgmt-sql, azure-mgmt-storage, azure-mgmt-subscription, azure-mgmt-trafficmanager, azure-mgmt-web
ncclient==0.6.4 # via junos-eznc

View file

@ -62,7 +62,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.1 # via junos-eznc

View file

@ -61,7 +61,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
ncclient==0.6.4 # via junos-eznc
netaddr==0.7.19 # via junos-eznc
ntc-templates==1.4.1 # via junos-eznc

View file

@ -148,7 +148,7 @@ markupsafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
moto==1.3.7
msgpack==0.5.6
msgpack==1.0.0
msrest==0.6.14 # via azure-applicationinsights, azure-eventgrid, azure-keyvault, azure-loganalytics, azure-mgmt-cdn, azure-mgmt-compute, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-dns, azure-mgmt-eventhub, azure-mgmt-keyvault, azure-mgmt-media, azure-mgmt-network, azure-mgmt-rdbms, azure-mgmt-resource, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-servicefabric, msrestazure
msrestazure==0.6.3 # via azure-batch, azure-eventgrid, azure-graphrbac, azure-keyvault, azure-mgmt-advisor, azure-mgmt-applicationinsights, azure-mgmt-authorization, azure-mgmt-batch, azure-mgmt-batchai, azure-mgmt-billing, azure-mgmt-cdn, azure-mgmt-cognitiveservices, azure-mgmt-commerce, azure-mgmt-compute, azure-mgmt-consumption, azure-mgmt-containerinstance, azure-mgmt-containerregistry, azure-mgmt-containerservice, azure-mgmt-cosmosdb, azure-mgmt-datafactory, azure-mgmt-datalake-analytics, azure-mgmt-datalake-store, azure-mgmt-datamigration, azure-mgmt-devspaces, azure-mgmt-devtestlabs, azure-mgmt-dns, azure-mgmt-eventgrid, azure-mgmt-eventhub, azure-mgmt-hanaonazure, azure-mgmt-iotcentral, azure-mgmt-iothub, azure-mgmt-iothubprovisioningservices, azure-mgmt-keyvault, azure-mgmt-loganalytics, azure-mgmt-logic, azure-mgmt-machinelearningcompute, azure-mgmt-managementgroups, azure-mgmt-managementpartner, azure-mgmt-maps, azure-mgmt-marketplaceordering, azure-mgmt-media, azure-mgmt-monitor, azure-mgmt-msi, azure-mgmt-network, azure-mgmt-notificationhubs, azure-mgmt-policyinsights, azure-mgmt-powerbiembedded, azure-mgmt-rdbms, azure-mgmt-recoveryservices, azure-mgmt-recoveryservicesbackup, azure-mgmt-redis, azure-mgmt-relay, azure-mgmt-reservations, azure-mgmt-resource, azure-mgmt-scheduler, azure-mgmt-search, azure-mgmt-servicebus, azure-mgmt-servicefabric, azure-mgmt-signalr, azure-mgmt-sql, azure-mgmt-storage, azure-mgmt-subscription, azure-mgmt-trafficmanager, azure-mgmt-web
ncclient==0.6.4 # via junos-eznc

View file

@ -35,6 +35,23 @@ if not available:
_fail()
elif salt.utils.msgpack.version >= (1, 0, 0):
def _serialize(obj, **options):
try:
return salt.utils.msgpack.dumps(obj, **options)
except Exception as error: # pylint: disable=broad-except
raise SerializationError(error)
def _deserialize(stream_or_string, **options):
try:
options.setdefault("use_list", True)
options.setdefault("raw", False)
return salt.utils.msgpack.loads(stream_or_string, **options)
except Exception as error: # pylint: disable=broad-except
raise DeserializationError(error)
elif salt.utils.msgpack.version >= (0, 2, 0):
def _serialize(obj, **options):

View file

@ -82,10 +82,11 @@ def _sanitize_msgpack_unpack_kwargs(kwargs):
https://github.com/msgpack/msgpack-python/blob/master/ChangeLog.rst
"""
assert isinstance(kwargs, dict)
if version >= (1, 0, 0) and kwargs.get("raw", None) is None:
log.info("adding `raw=True` argument to msgpack call")
kwargs["raw"] = True
if version >= (1, 0, 0):
kwargs.setdefault("raw", True)
kwargs.setdefault("strict_map_key", False)
if "encoding" in kwargs:
del kwargs["encoding"]
return _sanitize_msgpack_kwargs(kwargs)

View file

@ -231,36 +231,35 @@ class TestMsgpack(TestCase):
"""
version = salt.utils.msgpack.version
kwargs = {"strict_map_key": True, "use_bin_type": True}
kwargs = {"strict_map_key": True, "use_bin_type": True, "encoding": "utf-8"}
salt.utils.msgpack.version = (1, 0, 0)
self.assertEqual(
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs),
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs.copy()),
{"raw": True, "strict_map_key": True, "use_bin_type": True},
)
kwargs = {"strict_map_key": True, "use_bin_type": True}
salt.utils.msgpack.version = (0, 6, 0)
self.assertEqual(
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs),
{"strict_map_key": True, "use_bin_type": True},
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs.copy()),
{"strict_map_key": True, "use_bin_type": True, "encoding": "utf-8"},
)
kwargs = {"strict_map_key": True, "use_bin_type": True}
salt.utils.msgpack.version = (0, 5, 2)
self.assertEqual(
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs),
{"use_bin_type": True},
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs.copy()),
{"use_bin_type": True, "encoding": "utf-8"},
)
kwargs = {"strict_map_key": True, "use_bin_type": True}
salt.utils.msgpack.version = (0, 4, 0)
self.assertEqual(
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs),
{"use_bin_type": True},
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs.copy()),
{"use_bin_type": True, "encoding": "utf-8"},
)
kwargs = {"strict_map_key": True, "use_bin_type": True}
salt.utils.msgpack.version = (0, 3, 0)
self.assertEqual(salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs), {})
self.assertEqual(
salt.utils.msgpack._sanitize_msgpack_unpack_kwargs(kwargs.copy()), {}
)
salt.utils.msgpack.version = version
def _test_base(self, pack_func, unpack_func):
@ -286,7 +285,6 @@ class TestMsgpack(TestCase):
# Sanity check, we are not borking the BytesIO read function
self.assertNotEqual(BytesIO.read, buffer.read)
buffer.read = buffer.getvalue
pack_func(data, buffer)
# Sanity Check
self.assertTrue(buffer.getvalue())
@ -295,7 +293,11 @@ class TestMsgpack(TestCase):
# Reverse the packing and the result should be equivalent to the original data
unpacked = unpack_func(buffer)
self.assertEqual(data, unpacked.decode())
if isinstance(unpacked, bytes):
unpacked = unpacked.decode()
self.assertEqual(data, unpacked)
def test_buffered_base_pack(self):
self._test_buffered_base(