diff options
| author | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-10-20 14:41:56 +0200 |
|---|---|---|
| committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-10-20 15:11:16 +0200 |
| commit | 8a66978666ca207d8abf203d7dbde6bc69f6433d (patch) | |
| tree | f6dcc5b7c28ec89ee320234ff2881864c119dcc8 /ironic_python_agent/partition_utils.py | |
| parent | 333ed70c94e366f16d8f2633f74a5ef05aa5fadb (diff) | |
| download | ironic-python-agent-8a66978666ca207d8abf203d7dbde6bc69f6433d.tar.gz | |
Respect global parameters when downloading a configdrive
* Use the same TLS parameters as everything else
* Respect image_download_connection_timeout
* Do not ignore HTTP errors
Change-Id: I84f8021f731186d82e44ac3d4ef2d12df13f830a
Diffstat (limited to 'ironic_python_agent/partition_utils.py')
| -rw-r--r-- | ironic_python_agent/partition_utils.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ironic_python_agent/partition_utils.py b/ironic_python_agent/partition_utils.py index c32a994d..498fb284 100644 --- a/ironic_python_agent/partition_utils.py +++ b/ironic_python_agent/partition_utils.py @@ -29,13 +29,17 @@ from ironic_lib import disk_utils from ironic_lib import exception from ironic_lib import utils from oslo_concurrency import processutils +from oslo_config import cfg from oslo_log import log from oslo_utils import excutils from oslo_utils import units import requests +from ironic_python_agent import utils as ipa_utils + LOG = log.getLogger() +CONF = cfg.CONF MAX_CONFIG_DRIVE_SIZE_MB = 64 @@ -59,13 +63,27 @@ def get_configdrive(configdrive, node_uuid, tempdir=None): # Check if the configdrive option is a HTTP URL or the content directly is_url = utils.is_http_url(configdrive) if is_url: + verify, cert = ipa_utils.get_ssl_client_options(CONF) + timeout = CONF.image_download_connection_timeout + # TODO(dtantsur): support proxy parameters from instance_info try: - data = requests.get(configdrive).content + resp = requests.get(configdrive, verify=verify, cert=cert, + timeout=timeout) except requests.exceptions.RequestException as e: raise exception.InstanceDeployFailure( "Can't download the configdrive content for node %(node)s " "from '%(url)s'. Reason: %(reason)s" % {'node': node_uuid, 'url': configdrive, 'reason': e}) + + if resp.status_code >= 400: + raise exception.InstanceDeployFailure( + "Can't download the configdrive content for node %(node)s " + "from '%(url)s'. Got status code %(code)s, response " + "body %(body)s" % + {'node': node_uuid, 'url': configdrive, + 'code': resp.status_code, 'body': resp.text}) + + data = resp.content else: data = configdrive |
