summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2021-01-22 17:52:21 +0100
committerDmitry Tantsur <dtantsur@protonmail.com>2021-02-18 10:16:57 +0100
commit6e09a008ab571e3536ccba8fe3557ad22d551564 (patch)
tree52427815cbc962048d80f61b6fe28a5b4b75aa74
parent3858b95204a18e76532536fcde31b45761a05b81 (diff)
downloadironic-6e09a008ab571e3536ccba8fe3557ad22d551564.tar.gz
Replace pysendfile with os.sendfile
Change-Id: I1ef33d41fd3784f55929fa6a086fca0c335212e5
-rw-r--r--ironic/common/glance_service/image_service.py3
-rw-r--r--ironic/common/image_service.py11
-rw-r--r--ironic/tests/unit/common/test_glance_service.py2
-rw-r--r--ironic/tests/unit/common/test_image_service.py8
-rw-r--r--requirements.txt1
5 files changed, 9 insertions, 16 deletions
diff --git a/ironic/common/glance_service/image_service.py b/ironic/common/glance_service/image_service.py
index 68efe46b4..66ac693f8 100644
--- a/ironic/common/glance_service/image_service.py
+++ b/ironic/common/glance_service/image_service.py
@@ -25,7 +25,6 @@ from glanceclient import client
from glanceclient import exc as glance_exc
from oslo_log import log
from oslo_utils import uuidutils
-import sendfile
from swiftclient import utils as swift_utils
import tenacity
@@ -196,7 +195,7 @@ class GlanceImageService(object):
if url.scheme == "file":
with open(url.path, "r") as f:
filesize = os.path.getsize(f.name)
- sendfile.sendfile(data.fileno(), f.fileno(), 0, filesize)
+ os.sendfile(data.fileno(), f.fileno(), 0, filesize)
return
image_chunks = self.call('data', image_id)
diff --git a/ironic/common/image_service.py b/ironic/common/image_service.py
index 7e76829cf..615e8f63e 100644
--- a/ironic/common/image_service.py
+++ b/ironic/common/image_service.py
@@ -26,7 +26,6 @@ from oslo_log import log
from oslo_utils import strutils
from oslo_utils import uuidutils
import requests
-import sendfile
from ironic.common import exception
from ironic.common.glance_service.image_service import GlanceImageService
@@ -235,13 +234,11 @@ class FileImageService(BaseImageService):
offset = 0
with open(source_image_path, 'rb') as input_img:
while offset < filesize:
- # TODO(kaifeng) Use os.sendfile() and remove sendfile
- # dependency when python2 support is dropped.
count = min(SENDFILE_CHUNK_SIZE, filesize - offset)
- nbytes_out = sendfile.sendfile(image_file.fileno(),
- input_img.fileno(),
- offset,
- count)
+ nbytes_out = os.sendfile(image_file.fileno(),
+ input_img.fileno(),
+ offset,
+ count)
offset += nbytes_out
except Exception as e:
raise exception.ImageDownloadFailed(image_href=image_href,
diff --git a/ironic/tests/unit/common/test_glance_service.py b/ironic/tests/unit/common/test_glance_service.py
index 4f4a73a95..f0e9f1002 100644
--- a/ironic/tests/unit/common/test_glance_service.py
+++ b/ironic/tests/unit/common/test_glance_service.py
@@ -228,7 +228,7 @@ class TestGlanceImageService(base.TestCase):
'image contains no data',
self.service.download, image_id)
- @mock.patch('sendfile.sendfile', autospec=True)
+ @mock.patch('os.sendfile', autospec=True)
@mock.patch('os.path.getsize', autospec=True)
@mock.patch('%s.open' % __name__, new=mock.mock_open(), create=True)
def test_download_file_url(self, mock_getsize, mock_sendfile):
diff --git a/ironic/tests/unit/common/test_image_service.py b/ironic/tests/unit/common/test_image_service.py
index c04ae3801..6aa5da546 100644
--- a/ironic/tests/unit/common/test_image_service.py
+++ b/ironic/tests/unit/common/test_image_service.py
@@ -21,7 +21,6 @@ from unittest import mock
from oslo_config import cfg
from oslo_utils import uuidutils
import requests
-import sendfile
from ironic.common import exception
from ironic.common.glance_service import image_service as glance_v2_service
@@ -447,7 +446,7 @@ class FileImageServiceTestCase(base.TestCase):
remove_mock.assert_called_once_with('file')
link_mock.assert_called_once_with(self.href_path, 'file')
- @mock.patch.object(sendfile, 'sendfile', return_value=42, autospec=True)
+ @mock.patch.object(os, 'sendfile', return_value=42, autospec=True)
@mock.patch.object(os.path, 'getsize', return_value=42, autospec=True)
@mock.patch.object(builtins, 'open', autospec=True)
@mock.patch.object(os, 'access', return_value=False, autospec=True)
@@ -470,7 +469,7 @@ class FileImageServiceTestCase(base.TestCase):
input_mock.__enter__().fileno(),
0, 42)
- @mock.patch.object(sendfile, 'sendfile', autospec=True)
+ @mock.patch.object(os, 'sendfile', autospec=True)
@mock.patch.object(os.path, 'getsize', return_value=42, autospec=True)
@mock.patch.object(builtins, 'open', autospec=True)
@mock.patch.object(os, 'access', return_value=False, autospec=True)
@@ -520,8 +519,7 @@ class FileImageServiceTestCase(base.TestCase):
self.assertEqual(2, stat_mock.call_count)
access_mock.assert_called_once_with(self.href_path, os.R_OK | os.W_OK)
- @mock.patch.object(sendfile, 'sendfile', side_effect=OSError,
- autospec=True)
+ @mock.patch.object(os, 'sendfile', side_effect=OSError, autospec=True)
@mock.patch.object(os.path, 'getsize', return_value=42, autospec=True)
@mock.patch.object(builtins, 'open', autospec=True)
@mock.patch.object(os, 'access', return_value=False, autospec=True)
diff --git a/requirements.txt b/requirements.txt
index aee276d27..9c1b940d4 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14,7 +14,6 @@ ironic-lib>=4.3.0 # Apache-2.0
python-swiftclient>=3.2.0 # Apache-2.0
pytz>=2013.6 # MIT
stevedore>=1.20.0 # Apache-2.0
-pysendfile>=2.0.0;sys_platform!='win32' # MIT
oslo.concurrency>=4.2.0 # Apache-2.0
oslo.config>=6.8.0 # Apache-2.0
oslo.context>=2.19.2 # Apache-2.0