diff --git a/cinder/api/v3/volume_metadata.py b/cinder/api/v3/volume_metadata.py index ff754b6b1e8..2f6e3878d05 100644 --- a/cinder/api/v3/volume_metadata.py +++ b/cinder/api/v3/volume_metadata.py @@ -15,10 +15,10 @@ """The volume metadata V3 api.""" +import hashlib from http import HTTPStatus from oslo_serialization import jsonutils -from oslo_utils.secretutils import md5 import webob from cinder.api import microversions as mv @@ -37,7 +37,7 @@ class Controller(volume_meta_v2.Controller): metadata = self._get_metadata(context, volume_id) data = jsonutils.dumps({"metadata": metadata}) data = data.encode('utf-8') - checksum = md5(data, usedforsecurity=False).hexdigest() + checksum = hashlib.md5(data, usedforsecurity=False).hexdigest() return checksum in req.if_match.etags @wsgi.extends @@ -48,7 +48,8 @@ class Controller(volume_meta_v2.Controller): data = jsonutils.dumps(metadata) data = data.encode('utf-8') resp = webob.Response() - resp.headers['Etag'] = md5(data, usedforsecurity=False).hexdigest() + resp.headers['Etag'] = hashlib.md5( + data, usedforsecurity=False).hexdigest() resp.body = data return resp return metadata diff --git a/cinder/backup/chunkeddriver.py b/cinder/backup/chunkeddriver.py index 490baf84458..bd1be600ef8 100644 --- a/cinder/backup/chunkeddriver.py +++ b/cinder/backup/chunkeddriver.py @@ -32,7 +32,6 @@ from oslo_config import cfg from oslo_log import log as logging from oslo_service import loopingcall from oslo_utils import excutils -from oslo_utils import secretutils from oslo_utils import units from cinder.backup import driver @@ -401,7 +400,7 @@ class ChunkedBackupDriver(driver.BackupDriver, metaclass=abc.ABCMeta): ) as writer: writer.write(output_data) md5 = eventlet.tpool.execute( - secretutils.md5, data, usedforsecurity=False).hexdigest() + hashlib.md5, data, usedforsecurity=False).hexdigest() obj[object_name]['md5'] = md5 LOG.debug('backup MD5 for %(object_name)s: %(md5)s', {'object_name': object_name, 'md5': md5}) diff --git a/cinder/backup/drivers/gcs.py b/cinder/backup/drivers/gcs.py index cc3aa662b84..5ea123e5537 100644 --- a/cinder/backup/drivers/gcs.py +++ b/cinder/backup/drivers/gcs.py @@ -27,6 +27,7 @@ Server-centric flow is used for authentication. """ import base64 +import hashlib import io import os @@ -42,7 +43,6 @@ from googleapiclient import errors from googleapiclient import http from oslo_config import cfg from oslo_log import log as logging -from oslo_utils import secretutils from oslo_utils import timeutils from cinder.backup import chunkeddriver @@ -314,7 +314,7 @@ class GoogleObjectWriter(object): body={}, media_body=media).execute(num_retries=self.num_retries) etag = resp['md5Hash'] - md5 = secretutils.md5(self.data, usedforsecurity=False).digest() + md5 = hashlib.md5(self.data, usedforsecurity=False).digest() md5 = md5.encode('utf-8') etag = bytes(etag, 'utf-8') md5 = base64.b64encode(md5) diff --git a/cinder/backup/drivers/s3.py b/cinder/backup/drivers/s3.py index 0f62c402ab4..28284b28b5b 100644 --- a/cinder/backup/drivers/s3.py +++ b/cinder/backup/drivers/s3.py @@ -65,6 +65,7 @@ import base64 import functools +import hashlib import io import itertools as it import socket @@ -76,7 +77,6 @@ from botocore.vendored.requests.packages.urllib3 import exceptions as \ urrlib_exc from oslo_config import cfg from oslo_log import log as logging -from oslo_utils.secretutils import md5 from oslo_utils import timeutils from cinder.backup import chunkeddriver @@ -325,7 +325,8 @@ class S3ObjectWriter(object): def close(self): reader = io.BytesIO(self.data) contentmd5 = base64.b64encode( - md5(self.data, usedforsecurity=False).digest()).decode('utf-8') + hashlib.md5(self.data, + usedforsecurity=False).digest()).decode('utf-8') put_args = {'Bucket': self.bucket, 'Body': reader, 'Key': self.object_name, diff --git a/cinder/backup/drivers/swift.py b/cinder/backup/drivers/swift.py index 19b5842e73e..5cd716669f9 100644 --- a/cinder/backup/drivers/swift.py +++ b/cinder/backup/drivers/swift.py @@ -42,13 +42,12 @@ :backup_swift_auth_insecure: If true, bypass verification of server's certificate for SSL connections (default: False) """ - +import hashlib import io import socket from oslo_config import cfg from oslo_log import log as logging -from oslo_utils import secretutils from oslo_utils import timeutils from swiftclient import client as swift from swiftclient import exceptions as swift_exc @@ -323,7 +322,7 @@ class SwiftBackupDriver(chunkeddriver.ChunkedBackupDriver): headers=headers) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) - md5 = secretutils.md5(self.data, usedforsecurity=False).hexdigest() + md5 = hashlib.md5(self.data, usedforsecurity=False).hexdigest() if etag != md5: err = _('error writing object to swift, MD5 of object in ' 'swift %(etag)s is not the same as MD5 of object sent ' diff --git a/cinder/tests/unit/backup/fake_swift_client2.py b/cinder/tests/unit/backup/fake_swift_client2.py index b15c3f6202d..7d583901636 100644 --- a/cinder/tests/unit/backup/fake_swift_client2.py +++ b/cinder/tests/unit/backup/fake_swift_client2.py @@ -14,12 +14,12 @@ # License for the specific language governing permissions and limitations # under the License. +import hashlib from http import client as http_client import os import socket import tempfile -from oslo_utils.secretutils import md5 from swiftclient import client as swift @@ -78,7 +78,7 @@ class FakeSwiftConnection2(object): object_path = tempfile.gettempdir() + '/' + container + '/' + name with open(object_path, 'wb') as object_file: object_file.write(reader.read()) - return md5(reader.read(), usedforsecurity=False).hexdigest() + return hashlib.md5(reader.read(), usedforsecurity=False).hexdigest() def delete_object(self, container, name, headers=None): pass diff --git a/cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.py b/cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.py index aad6a15afeb..3317f593627 100644 --- a/cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.py +++ b/cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.py @@ -14,12 +14,12 @@ # under the License. """Mock unit tests for the NetApp cmode nfs storage driver.""" +import hashlib from unittest import mock import uuid import ddt from os_brick.remotefs import remotefs as remotefs_brick -from oslo_utils.secretutils import md5 from oslo_utils import units from cinder import exception @@ -993,7 +993,7 @@ class NetAppCmodeNfsDriverTestCase(test.TestCase): drv = self.driver cinder_mount_point_base = '/opt/stack/data/cinder/mnt/' # To get the cinder mount point directory, we use: - mount_dir = md5( + mount_dir = hashlib.md5( '203.0.113.122:/cinder-flexvol1'.encode('utf-8'), usedforsecurity=False).hexdigest() cinder_mount_point = cinder_mount_point_base + mount_dir diff --git a/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py b/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py index 07b46e5d9ab..afe1052ecc2 100644 --- a/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py +++ b/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py @@ -15,13 +15,13 @@ """Unit tests for NexentaStor 5 REST API helper.""" import copy +import hashlib import json import posixpath from unittest import mock import urllib import uuid -from oslo_utils.secretutils import md5 import requests from cinder.tests.unit import test @@ -1185,7 +1185,7 @@ class TestNefProxy(test.TestCase): get_settings.return_value = settings self.assertIsNone(self.proxy.update_lock()) path = ('%s:%s' % (guid, self.proxy.path)).encode('utf-8') - expected = md5(path, usedforsecurity=False).hexdigest() + expected = hashlib.md5(path, usedforsecurity=False).hexdigest() self.assertEqual(expected, self.proxy.lock) def test_url(self): diff --git a/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_nfs.py b/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_nfs.py index 65527cbe72e..7d751c5a047 100644 --- a/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_nfs.py +++ b/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_nfs.py @@ -13,10 +13,10 @@ # License for the specific language governing permissions and limitations # under the License. """Unit tests for OpenStack Cinder volume driver.""" +import hashlib import os from unittest import mock -from oslo_utils.secretutils import md5 from oslo_utils import units from cinder import context @@ -802,7 +802,7 @@ class TestNexentaNfsDriver(test.TestCase): result = self.drv._local_volume_dir(volume) get_share.assert_called_with(volume) share = share.encode('utf-8') - digest = md5(share, usedforsecurity=False).hexdigest() + digest = hashlib.md5(share, usedforsecurity=False).hexdigest() expected = os.path.join(self.cfg.nexenta_mount_point_base, digest) self.assertEqual(expected, result) diff --git a/cinder/tests/unit/volume/drivers/test_kioxia.py b/cinder/tests/unit/volume/drivers/test_kioxia.py index 345ecb0b815..f4d05e22791 100644 --- a/cinder/tests/unit/volume/drivers/test_kioxia.py +++ b/cinder/tests/unit/volume/drivers/test_kioxia.py @@ -10,11 +10,10 @@ # License for the specific language governing permissions and limitations # under the License. +import hashlib import unittest from unittest import mock -from oslo_utils.secretutils import md5 - from cinder import exception from cinder.tests.unit import test from cinder.volume import configuration as conf @@ -695,7 +694,8 @@ class KioxiaVolumeTestCase(test.TestCase): def test_convert_host_name(self): name = 'ks-node3-000c2960a794-000c2960a797' result = self.driver._convert_host_name(name) - expected = md5(name.encode('utf-8'), usedforsecurity=False).hexdigest() + expected = hashlib.md5(name.encode('utf-8'), + usedforsecurity=False).hexdigest() self.assertEqual(result, expected) def test_create_export(self): diff --git a/cinder/tests/unit/volume/drivers/veritas_access/test_veritas_iscsi.py b/cinder/tests/unit/volume/drivers/veritas_access/test_veritas_iscsi.py index a175487724e..c532dc5f311 100644 --- a/cinder/tests/unit/volume/drivers/veritas_access/test_veritas_iscsi.py +++ b/cinder/tests/unit/volume/drivers/veritas_access/test_veritas_iscsi.py @@ -14,12 +14,12 @@ """ Unit tests for Veritas Access cinder driver. """ +import hashlib import json import tempfile from unittest import mock from xml.dom.minidom import Document -from oslo_utils.secretutils import md5 import requests from cinder import context @@ -224,10 +224,10 @@ class ACCESSIscsiDriverTestCase(test.TestCase): index = int(length / 2) name1 = self.volume.id[:index] name2 = self.volume.id[index:] - crc1 = md5(name1.encode('utf-8'), - usedforsecurity=False).hexdigest()[:5] - crc2 = md5(name2.encode('utf-8'), - usedforsecurity=False).hexdigest()[:5] + crc1 = hashlib.md5(name1.encode('utf-8'), + usedforsecurity=False).hexdigest()[:5] + crc2 = hashlib.md5(name2.encode('utf-8'), + usedforsecurity=False).hexdigest()[:5] volume_name_to_ret = 'cinder' + '-' + crc1 + '-' + crc2 diff --git a/cinder/volume/drivers/dell_emc/powermax/utils.py b/cinder/volume/drivers/dell_emc/powermax/utils.py index 9ec3e0b3e19..3a3ad408a88 100644 --- a/cinder/volume/drivers/dell_emc/powermax/utils.py +++ b/cinder/volume/drivers/dell_emc/powermax/utils.py @@ -15,10 +15,10 @@ from copy import deepcopy import datetime +import hashlib import re from oslo_log import log as logging -from oslo_utils.secretutils import md5 from oslo_utils import strutils from oslo_utils import units import packaging.version @@ -456,7 +456,7 @@ class PowerMaxUtils(object): :returns: uuid """ input_str = input_str.lower() - m = md5(usedforsecurity=False) + m = hashlib.md5(usedforsecurity=False) m.update(input_str.encode('utf-8')) return m.hexdigest() diff --git a/cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_common.py b/cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_common.py index a9d437ba918..8c8a3377c64 100644 --- a/cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_common.py +++ b/cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_common.py @@ -19,6 +19,7 @@ """Cinder Volume driver for Fujitsu ETERNUS DX S3 series.""" import base64 +import hashlib import time from lxml import etree as ET @@ -26,7 +27,6 @@ from oslo_concurrency import lockutils from oslo_config import cfg from oslo_log import log as logging from oslo_service import loopingcall -from oslo_utils.secretutils import md5 from oslo_utils import units from cinder import context @@ -1438,7 +1438,7 @@ class FJDXCommon(object): id_code = volume['id'] - m = md5(usedforsecurity=False) + m = hashlib.md5(usedforsecurity=False) m.update(id_code.encode('utf-8')) # Pylint: disable=E1121. diff --git a/cinder/volume/drivers/huawei/huawei_utils.py b/cinder/volume/drivers/huawei/huawei_utils.py index 572d61027b6..2b779d878c3 100644 --- a/cinder/volume/drivers/huawei/huawei_utils.py +++ b/cinder/volume/drivers/huawei/huawei_utils.py @@ -13,11 +13,11 @@ # License for the specific language governing permissions and limitations # under the License. +import hashlib import json import math from oslo_log import log as logging -from oslo_utils.secretutils import md5 from oslo_utils import strutils from cinder import context @@ -35,8 +35,8 @@ LOG = logging.getLogger(__name__) def encode_name(name): - encoded_name = md5(name.encode('utf-8'), - usedforsecurity=False).hexdigest() + encoded_name = hashlib.md5(name.encode('utf-8'), + usedforsecurity=False).hexdigest() prefix = name.split('-')[0] + '-' postfix = encoded_name[:constants.MAX_NAME_LENGTH - len(prefix)] return prefix + postfix @@ -54,8 +54,8 @@ def old_encode_name(name): def encode_host_name(name): if name and len(name) > constants.MAX_NAME_LENGTH: - encoded_name = md5(name.encode('utf-8'), - usedforsecurity=False).hexdigest() + encoded_name = hashlib.md5(name.encode('utf-8'), + usedforsecurity=False).hexdigest() return encoded_name[:constants.MAX_NAME_LENGTH] return name diff --git a/cinder/volume/drivers/kioxia/kumoscale.py b/cinder/volume/drivers/kioxia/kumoscale.py index 0a2767707fe..2690f7ebddf 100644 --- a/cinder/volume/drivers/kioxia/kumoscale.py +++ b/cinder/volume/drivers/kioxia/kumoscale.py @@ -14,10 +14,10 @@ """Volume driver for KIOXIA KumoScale NVMeOF storage system.""" +import hashlib from oslo_config import cfg from oslo_log import log as logging -from oslo_utils.secretutils import md5 from cinder.common import constants from cinder import exception @@ -386,7 +386,8 @@ class KumoScaleBaseVolumeDriver(driver.BaseVD): if name is None: return "" if len(name) > 32: - name = md5(name.encode('utf-8'), usedforsecurity=False).hexdigest() + name = hashlib.md5(name.encode('utf-8'), + usedforsecurity=False).hexdigest() else: name = name.replace('.', '-').lower() return name diff --git a/cinder/volume/drivers/nexenta/nfs.py b/cinder/volume/drivers/nexenta/nfs.py index c0f25cd6932..6a70af092ed 100644 --- a/cinder/volume/drivers/nexenta/nfs.py +++ b/cinder/volume/drivers/nexenta/nfs.py @@ -13,13 +13,13 @@ # License for the specific language governing permissions and limitations # under the License. +import hashlib import os import re from eventlet import greenthread from oslo_log import log as logging from oslo_utils import fileutils -from oslo_utils.secretutils import md5 from oslo_utils import units from cinder.common import constants @@ -612,8 +612,9 @@ class NexentaNfsDriver(nfs.NfsDriver): :param nfs_share: example 172.18.194.100:/var/nfs """ nfs_share = nfs_share.encode('utf-8') - return os.path.join(self.configuration.nexenta_mount_point_base, - md5(nfs_share, usedforsecurity=False).hexdigest()) + return os.path.join( + self.configuration.nexenta_mount_point_base, + hashlib.md5(nfs_share, usedforsecurity=False).hexdigest()) def remote_path(self, volume): """Get volume path (mounted remotely fs path) for given volume. diff --git a/cinder/volume/drivers/nexenta/ns5/jsonrpc.py b/cinder/volume/drivers/nexenta/ns5/jsonrpc.py index 2e2443ca797..a7ea7eea446 100644 --- a/cinder/volume/drivers/nexenta/ns5/jsonrpc.py +++ b/cinder/volume/drivers/nexenta/ns5/jsonrpc.py @@ -13,13 +13,13 @@ # License for the specific language governing permissions and limitations # under the License. +import hashlib import json import posixpath import urllib from eventlet import greenthread from oslo_log import log as logging -from oslo_utils.secretutils import md5 import requests from cinder import exception @@ -601,7 +601,7 @@ class NefProxy(object): path = '%s:%s' % (guid, self.path) if isinstance(path, str): path = path.encode('utf-8') - self.lock = md5(path, usedforsecurity=False).hexdigest() + self.lock = hashlib.md5(path, usedforsecurity=False).hexdigest() def url(self, path): netloc = '%s:%d' % (self.host, int(self.port)) diff --git a/cinder/volume/drivers/nexenta/ns5/nfs.py b/cinder/volume/drivers/nexenta/ns5/nfs.py index f8ad6d6081b..2634b585d08 100644 --- a/cinder/volume/drivers/nexenta/ns5/nfs.py +++ b/cinder/volume/drivers/nexenta/ns5/nfs.py @@ -14,12 +14,12 @@ # under the License. import errno +import hashlib import os import posixpath import uuid from oslo_log import log as logging -from oslo_utils.secretutils import md5 from oslo_utils import units from cinder.common import constants @@ -770,7 +770,7 @@ class NexentaNfsDriver(nfs.NfsDriver): share = self._get_volume_share(volume) if isinstance(share, str): share = share.encode('utf-8') - path = md5(share, usedforsecurity=False).hexdigest() + path = hashlib.md5(share, usedforsecurity=False).hexdigest() return os.path.join(self.mount_point_base, path) def local_path(self, volume): diff --git a/cinder/volume/drivers/remotefs.py b/cinder/volume/drivers/remotefs.py index 64bbeb2259a..900ad636347 100644 --- a/cinder/volume/drivers/remotefs.py +++ b/cinder/volume/drivers/remotefs.py @@ -17,6 +17,7 @@ import binascii import collections import errno +import hashlib import inspect import json import math @@ -35,7 +36,6 @@ from oslo_config import cfg from oslo_log import log as logging from oslo_serialization import jsonutils from oslo_utils import imageutils -from oslo_utils.secretutils import md5 from oslo_utils import units from cinder import compute @@ -1041,7 +1041,7 @@ class RemoteFSSnapDriverBase(RemoteFSDriver): """ if isinstance(base_str, str): base_str = base_str.encode('utf-8') - return md5(base_str, usedforsecurity=False).hexdigest() + return hashlib.md5(base_str, usedforsecurity=False).hexdigest() def _get_mount_point_for_share(self, share: str) -> str: """Return mount point for share. diff --git a/cinder/volume/drivers/synology/synology_common.py b/cinder/volume/drivers/synology/synology_common.py index 6b2a84f7924..b2f41525cc0 100644 --- a/cinder/volume/drivers/synology/synology_common.py +++ b/cinder/volume/drivers/synology/synology_common.py @@ -15,6 +15,7 @@ import base64 import functools +import hashlib import json import math from os import urandom @@ -32,7 +33,6 @@ import eventlet from oslo_config import cfg from oslo_log import log as logging from oslo_utils import excutils -from oslo_utils.secretutils import md5 from oslo_utils import units import requests @@ -117,7 +117,7 @@ class AESCipher(object): d = d_i = b'' while len(d) < key_length + iv_length: md5_str = d_i + password + salt - d_i = md5(md5_str, usedforsecurity=True).digest() + d_i = hashlib.md5(md5_str, usedforsecurity=True).digest() d += d_i return d[:key_length], d[key_length:key_length + iv_length] diff --git a/cinder/volume/drivers/veritas_access/veritas_iscsi.py b/cinder/volume/drivers/veritas_access/veritas_iscsi.py index b425aee62de..2641ed367fc 100644 --- a/cinder/volume/drivers/veritas_access/veritas_iscsi.py +++ b/cinder/volume/drivers/veritas_access/veritas_iscsi.py @@ -16,6 +16,7 @@ Veritas Access Driver for ISCSI. """ import ast +import hashlib from http import HTTPStatus import json from random import randint @@ -25,7 +26,6 @@ from oslo_config import cfg from oslo_log import log as logging from oslo_service import loopingcall from oslo_utils import netutils -from oslo_utils.secretutils import md5 from oslo_utils import strutils from oslo_utils import units import requests @@ -164,10 +164,10 @@ class ACCESSIscsiDriver(driver.ISCSIDriver): index = int(length / 2) name1 = name[:index] name2 = name[index:] - crc1 = md5(name1.encode('utf-8'), - usedforsecurity=False).hexdigest()[:5] - crc2 = md5(name2.encode('utf-8'), - usedforsecurity=False).hexdigest()[:5] + crc1 = hashlib.md5(name1.encode('utf-8'), + usedforsecurity=False).hexdigest()[:5] + crc2 = hashlib.md5(name2.encode('utf-8'), + usedforsecurity=False).hexdigest()[:5] return 'cinder' + '-' + crc1 + '-' + crc2 def check_for_setup_error(self):