Merge "Remove oslo.serialization dependency"
This commit is contained in:
		@@ -13,6 +13,7 @@
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
import os
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
@@ -20,7 +21,6 @@ from ironic_lib import mdns
 | 
			
		||||
from oslo_concurrency import processutils
 | 
			
		||||
from oslo_config import cfg
 | 
			
		||||
from oslo_log import log as logging
 | 
			
		||||
from oslo_serialization import jsonutils
 | 
			
		||||
from oslo_utils import excutils
 | 
			
		||||
import requests
 | 
			
		||||
import stevedore
 | 
			
		||||
@@ -290,10 +290,10 @@ def collect_extra_hardware(data, failures):
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        data['data'] = jsonutils.loads(out)
 | 
			
		||||
    except ValueError as exc:
 | 
			
		||||
        data['data'] = json.loads(out)
 | 
			
		||||
    except json.decoder.JSONDecodeError as ex:
 | 
			
		||||
        msg = 'JSON returned from hardware-detect cannot be decoded: %s'
 | 
			
		||||
        failures.add(msg, exc)
 | 
			
		||||
        failures.add(msg, ex)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def collect_pci_devices_info(data, failures):
 | 
			
		||||
 
 | 
			
		||||
@@ -12,9 +12,10 @@
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from oslo_config import cfg
 | 
			
		||||
from oslo_log import log
 | 
			
		||||
from oslo_serialization import jsonutils
 | 
			
		||||
import requests
 | 
			
		||||
import tenacity
 | 
			
		||||
 | 
			
		||||
@@ -103,7 +104,7 @@ class APIClient(object):
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            response = self._request('GET', '/')
 | 
			
		||||
            data = jsonutils.loads(response.content)
 | 
			
		||||
            data = json.loads(response.content)
 | 
			
		||||
            version = data['default_version']['version'].split('.')
 | 
			
		||||
            self._ironic_api_version = (int(version[0]), int(version[1]))
 | 
			
		||||
            return self._ironic_api_version
 | 
			
		||||
@@ -127,8 +128,8 @@ class APIClient(object):
 | 
			
		||||
            if not isinstance(body, dict):
 | 
			
		||||
                # Old ironic format
 | 
			
		||||
                try:
 | 
			
		||||
                    body = jsonutils.loads(body)
 | 
			
		||||
                except ValueError:
 | 
			
		||||
                    body = json.loads(body)
 | 
			
		||||
                except json.decoder.JSONDecodeError:
 | 
			
		||||
                    body = {}
 | 
			
		||||
 | 
			
		||||
            text = (body.get('faultstring')
 | 
			
		||||
@@ -253,8 +254,8 @@ class APIClient(object):
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            content = jsonutils.loads(response.content)
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            content = json.loads(response.content)
 | 
			
		||||
        except json.decoder.JSONDecodeError as e:
 | 
			
		||||
            LOG.warning('Error decoding response: %s', e)
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
import socket
 | 
			
		||||
import time
 | 
			
		||||
from unittest import mock
 | 
			
		||||
@@ -19,7 +20,6 @@ from unittest import mock
 | 
			
		||||
from ironic_lib import exception as lib_exc
 | 
			
		||||
from oslo_concurrency import processutils
 | 
			
		||||
from oslo_config import cfg
 | 
			
		||||
from oslo_serialization import jsonutils
 | 
			
		||||
import pkg_resources
 | 
			
		||||
from stevedore import extension
 | 
			
		||||
 | 
			
		||||
@@ -192,8 +192,8 @@ class TestBaseAgent(ironic_agent_base.IronicAgentTest):
 | 
			
		||||
        # object.
 | 
			
		||||
        a_encoded = self.encoder.encode(a)
 | 
			
		||||
        b_encoded = self.encoder.encode(b)
 | 
			
		||||
        self.assertEqual(jsonutils.loads(a_encoded),
 | 
			
		||||
                         jsonutils.loads(b_encoded))
 | 
			
		||||
        self.assertEqual(json.loads(a_encoded),
 | 
			
		||||
                         json.loads(b_encoded))
 | 
			
		||||
 | 
			
		||||
    def test_get_status(self):
 | 
			
		||||
        started_at = time.time()
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,6 @@ import json
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
from oslo_config import cfg
 | 
			
		||||
from oslo_serialization import jsonutils
 | 
			
		||||
import requests
 | 
			
		||||
 | 
			
		||||
from ironic_python_agent import errors
 | 
			
		||||
@@ -149,7 +148,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
 | 
			
		||||
        expected_data = {
 | 
			
		||||
            'callback_url': 'http://192.0.2.1:9999',
 | 
			
		||||
            'agent_version': version.__version__}
 | 
			
		||||
        self.assertEqual(jsonutils.dumps(expected_data), data)
 | 
			
		||||
        self.assertEqual(json.dumps(expected_data), data)
 | 
			
		||||
 | 
			
		||||
    def test_successful_heartbeat_ip6(self):
 | 
			
		||||
        response = FakeResponse(status_code=202)
 | 
			
		||||
@@ -172,7 +171,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
 | 
			
		||||
        expected_data = {
 | 
			
		||||
            'callback_url': 'http://[fc00:1111::4]:9999',
 | 
			
		||||
            'agent_version': version.__version__}
 | 
			
		||||
        self.assertEqual(jsonutils.dumps(expected_data), data)
 | 
			
		||||
        self.assertEqual(json.dumps(expected_data), data)
 | 
			
		||||
 | 
			
		||||
    def test_successful_heartbeat_with_token(self):
 | 
			
		||||
        response = FakeResponse(status_code=202)
 | 
			
		||||
@@ -197,7 +196,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
 | 
			
		||||
            'callback_url': 'http://192.0.2.1:9999',
 | 
			
		||||
            'agent_token': 'magical',
 | 
			
		||||
            'agent_version': version.__version__}
 | 
			
		||||
        self.assertEqual(jsonutils.dumps(expected_data), data)
 | 
			
		||||
        self.assertEqual(json.dumps(expected_data), data)
 | 
			
		||||
 | 
			
		||||
    def test_heartbeat_agent_version_unsupported(self):
 | 
			
		||||
        response = FakeResponse(status_code=202)
 | 
			
		||||
@@ -218,7 +217,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
 | 
			
		||||
        self.assertEqual(API_URL + heartbeat_path, request_args[1])
 | 
			
		||||
        expected_data = {
 | 
			
		||||
            'callback_url': 'http://[fc00:1111::4]:9999'}
 | 
			
		||||
        self.assertEqual(jsonutils.dumps(expected_data), data)
 | 
			
		||||
        self.assertEqual(json.dumps(expected_data), data)
 | 
			
		||||
 | 
			
		||||
    def test_successful_heartbeat_with_verify_ca(self):
 | 
			
		||||
        response = FakeResponse(status_code=202)
 | 
			
		||||
@@ -246,7 +245,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
 | 
			
		||||
            'agent_token': 'magical',
 | 
			
		||||
            'agent_version': version.__version__,
 | 
			
		||||
            'agent_verify_ca': 'I am a cert'}
 | 
			
		||||
        self.assertEqual(jsonutils.dumps(expected_data), data)
 | 
			
		||||
        self.assertEqual(json.dumps(expected_data), data)
 | 
			
		||||
        headers = self.api_client.session.request.call_args[1]['headers']
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            '%d.%d' % ironic_api_client.AGENT_VERIFY_CA_IRONIC_VERSION,
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@
 | 
			
		||||
#    License for the specific language governing permissions and limitations
 | 
			
		||||
#    under the License.
 | 
			
		||||
 | 
			
		||||
import base64
 | 
			
		||||
import errno
 | 
			
		||||
import glob
 | 
			
		||||
import io
 | 
			
		||||
@@ -26,7 +27,6 @@ from unittest import mock
 | 
			
		||||
 | 
			
		||||
from ironic_lib import utils as ironic_utils
 | 
			
		||||
from oslo_concurrency import processutils
 | 
			
		||||
from oslo_serialization import base64
 | 
			
		||||
import requests
 | 
			
		||||
import testtools
 | 
			
		||||
 | 
			
		||||
@@ -321,7 +321,7 @@ class TestUtils(ironic_agent_base.IronicAgentTest):
 | 
			
		||||
        data = utils.gzip_and_b64encode(io_dict=io_dict)
 | 
			
		||||
        self.assertIsInstance(data, str)
 | 
			
		||||
 | 
			
		||||
        res = io.BytesIO(base64.decode_as_bytes(data))
 | 
			
		||||
        res = io.BytesIO(base64.b64decode(data))
 | 
			
		||||
        with tarfile.open(fileobj=res) as tar:
 | 
			
		||||
            members = [(m.name, m.size) for m in tar]
 | 
			
		||||
            self.assertEqual([('fake-name', len(contents))], members)
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
import base64
 | 
			
		||||
from collections import abc
 | 
			
		||||
import contextlib
 | 
			
		||||
import copy
 | 
			
		||||
@@ -31,8 +32,6 @@ from ironic_lib import utils as ironic_utils
 | 
			
		||||
from oslo_concurrency import processutils
 | 
			
		||||
from oslo_config import cfg
 | 
			
		||||
from oslo_log import log as logging
 | 
			
		||||
from oslo_serialization import base64
 | 
			
		||||
from oslo_serialization import jsonutils
 | 
			
		||||
from oslo_utils import units
 | 
			
		||||
import pyudev
 | 
			
		||||
import requests
 | 
			
		||||
@@ -504,6 +503,13 @@ def get_journalctl_output(lines=None, units=None):
 | 
			
		||||
    return get_command_output(cmd)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _encode_as_text(s):
 | 
			
		||||
    if isinstance(s, str):
 | 
			
		||||
        s = s.encode('utf-8')
 | 
			
		||||
    s = base64.b64encode(s)
 | 
			
		||||
    return s.decode('ascii')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def gzip_and_b64encode(io_dict=None, file_list=None):
 | 
			
		||||
    """Gzip and base64 encode files and BytesIO buffers.
 | 
			
		||||
 | 
			
		||||
@@ -529,7 +535,8 @@ def gzip_and_b64encode(io_dict=None, file_list=None):
 | 
			
		||||
                tar.add(f)
 | 
			
		||||
 | 
			
		||||
        fp.seek(0)
 | 
			
		||||
        return base64.encode_as_text(fp.getvalue())
 | 
			
		||||
 | 
			
		||||
        return _encode_as_text(fp.getvalue())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _collect_udev(io_dict):
 | 
			
		||||
@@ -686,8 +693,8 @@ def parse_capabilities(root):
 | 
			
		||||
    capabilities = root.get('capabilities', {})
 | 
			
		||||
    if isinstance(capabilities, str):
 | 
			
		||||
        try:
 | 
			
		||||
            capabilities = jsonutils.loads(capabilities)
 | 
			
		||||
        except (ValueError, TypeError):
 | 
			
		||||
            capabilities = json.loads(capabilities)
 | 
			
		||||
        except json.decoder.JSONDecodeError:
 | 
			
		||||
            capabilities = _parse_capabilities_str(capabilities)
 | 
			
		||||
 | 
			
		||||
    if not isinstance(capabilities, dict):
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@ netifaces>=0.10.4 # MIT
 | 
			
		||||
oslo.config>=5.2.0 # Apache-2.0
 | 
			
		||||
oslo.concurrency>=3.26.0 # Apache-2.0
 | 
			
		||||
oslo.log>=4.6.1 # Apache-2.0
 | 
			
		||||
oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 | 
			
		||||
oslo.service!=1.28.1,>=1.24.0 # Apache-2.0
 | 
			
		||||
oslo.utils>=3.34.0 # Apache-2.0
 | 
			
		||||
Pint>=0.5 # BSD
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user