Browse Source

Merge "Change [agent]image_download_source=http"

changes/28/746628/3
Zuul 1 year ago
committed by Gerrit Code Review
parent
commit
9341ca4ef7
  1. 18
      devstack/lib/ironic
  2. 2
      ironic/conf/agent.py
  3. 2
      ironic/tests/unit/drivers/modules/test_agent.py
  4. 1
      ironic/tests/unit/drivers/modules/test_deploy_utils.py
  5. 7
      releasenotes/notes/image-download-http-976c82f440c61c96.yaml
  6. 46
      zuul.d/ironic-jobs.yaml
  7. 2
      zuul.d/project.yaml

18
devstack/lib/ironic

@ -701,7 +701,12 @@ IRONIC_ANSIBLE_SSH_USER=${IRONIC_ANSIBLE_SSH_USER:-}
# DevStack deployment, as we do not distribute this generated key to subnodes yet.
IRONIC_ANSIBLE_SSH_KEY=${IRONIC_ANSIBLE_SSH_KEY:-$IRONIC_DATA_DIR/ansible_ssh_key}
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE=${IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE:-swift}
if is_service_enabled swift; then
IRONIC_DEFAULT_DOWNLOAD_SOURCE=swift
else
IRONIC_DEFAULT_DOWNLOAD_SOURCE=
fi
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE=${IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE:-$IRONIC_DEFAULT_DOWNLOAD_SOURCE}
# Functions
# ---------
@ -811,7 +816,12 @@ function is_ansible_with_tinyipa {
}
function is_glance_configuration_required {
is_deployed_by_agent || is_ansible_deploy_enabled || [[ "$IRONIC_CONFIGURE_GLANCE_WITH_SWIFT" == "True" ]] && return 0
# Always configure if we're asked to
[[ "$IRONIC_CONFIGURE_GLANCE_WITH_SWIFT" == "True" ]] && return 0
# Do not require swift configuration if using image_download_source!=swift
[[ "$IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE" == "swift" ]] || return 1
# Otherwise require for direct and ansible deploy
is_deployed_by_agent || is_ansible_deploy_enabled && return 0
return 1
}
@ -1403,7 +1413,9 @@ function configure_ironic {
iniset $IRONIC_CONF_FILE agent deploy_logs_storage_backend $IRONIC_DEPLOY_LOGS_STORAGE_BACKEND
iniset $IRONIC_CONF_FILE agent deploy_logs_local_path $IRONIC_DEPLOY_LOGS_LOCAL_PATH
# Set image_download_source for direct interface
iniset $IRONIC_CONF_FILE agent image_download_source $IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE
if [[ -n "$IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE" ]]; then
iniset $IRONIC_CONF_FILE agent image_download_source $IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE
fi
# Configure JSON RPC backend
iniset $IRONIC_CONF_FILE DEFAULT rpc_transport $IRONIC_RPC_TRANSPORT
iniset $IRONIC_CONF_FILE json_rpc port $IRONIC_JSON_RPC_PORT

2
ironic/conf/agent.py

@ -105,7 +105,7 @@ opts = [
('local', _('Same as "http", but HTTP images '
'are also cached locally, converted '
'and served from the conductor'))],
default='swift',
default='http',
mutable=True,
help=_('Specifies whether direct deploy interface should try '
'to use the image source directly or if ironic should '

2
ironic/tests/unit/drivers/modules/test_agent.py

@ -175,6 +175,7 @@ class TestAgentMethods(db_base.DbTestCase):
@mock.patch.object(deploy_utils, 'check_for_missing_params', autospec=True)
def test_validate_http_provisioning_not_http(self, utils_mock):
CONF.set_override('image_download_source', 'swift', group='agent')
i_info = self.node.instance_info
i_info['image_source'] = '0448fa34-4db1-407b-a051-6357d5f86c59'
self.node.instance_info = i_info
@ -182,7 +183,6 @@ class TestAgentMethods(db_base.DbTestCase):
utils_mock.assert_not_called()
def test_validate_http_provisioning_missing_args(self):
CONF.set_override('image_download_source', 'http', group='agent')
CONF.set_override('http_url', None, group='deploy')
i_info = self.node.instance_info
i_info['image_source'] = '0448fa34-4db1-407b-a051-6357d5f86c59'

1
ironic/tests/unit/drivers/modules/test_deploy_utils.py

@ -1747,6 +1747,7 @@ class TestBuildInstanceInfoForDeploy(db_base.DbTestCase):
self.node = obj_utils.create_test_node(self.context,
boot_interface='pxe',
deploy_interface='direct')
cfg.CONF.set_override('image_download_source', 'swift', group='agent')
@mock.patch.object(image_service.HttpImageService, 'validate_href',
autospec=True)

7
releasenotes/notes/image-download-http-976c82f440c61c96.yaml

@ -0,0 +1,7 @@
---
upgrade:
- |
The default value of the configuration option
``[agent]image_download_source`` has been changed to ``http`` to simplify
transition from the ``iscsi`` deploy interface. Set it to ``swift``
explicitly to maintain the previous behavior.

46
zuul.d/ironic-jobs.yaml

@ -112,6 +112,7 @@
tempest_concurrency: 2
devstack_localrc:
FORCE_CONFIG_DRIVE: False
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
IRONIC_AUTOMATED_CLEAN_ENABLED: False
IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
IRONIC_DEFAULT_RESCUE_INTERFACE: agent
@ -128,8 +129,6 @@
# a small root partition, so use /opt which is mounted from a bigger
# ephemeral partition on such nodes
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
SWIFT_ENABLE_TEMPURLS: True
SWIFT_TEMPURL_KEY: secretkey
devstack_services:
n-api: False
n-api-meta: False
@ -141,10 +140,10 @@
n-sch: False
nova: False
placement-api: False
s-account: True
s-container: True
s-object: True
s-proxy: True
s-account: False
s-container: False
s-object: False
s-proxy: False
- job:
name: ironic-standalone-redfish
@ -171,6 +170,7 @@
tempest_concurrency: 2
devstack_localrc:
FORCE_CONFIG_DRIVE: False
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
IRONIC_AUTOMATED_CLEAN_ENABLED: False
IRONIC_DEPLOY_DRIVER: redfish
IRONIC_ENABLED_BOOT_INTERFACES: "ipxe,redfish-virtual-media"
@ -189,8 +189,6 @@
# a small root partition, so use /opt which is mounted from a bigger
# ephemeral partition on such nodes
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
SWIFT_ENABLE_TEMPURLS: True
SWIFT_TEMPURL_KEY: secretkey
devstack_services:
n-api: False
n-api-meta: False
@ -202,10 +200,10 @@
n-sch: False
nova: False
placement-api: False
s-account: True
s-container: True
s-object: True
s-proxy: True
s-account: False
s-container: False
s-object: False
s-proxy: False
- job:
name: ironic-tempest-partition-bios-redfish-pxe
@ -384,30 +382,6 @@
s-object: True
s-proxy: True
- job:
name: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-indirect
description: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-indirect
parent: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool
vars:
devstack_localrc:
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
IRONIC_AUTOMATED_CLEAN_ENABLED: False
IRONIC_DEFAULT_RESCUE_INTERFACE: no-rescue
IRONIC_ENABLED_RESCUE_INTERFACES: "fake,no-rescue"
- job:
name: ironic-tempest-ipa-partition-bios-agent_ipmitool-indirect
description: ironic-tempest-ipa-partition-bios-agent_ipmitool-indirect
parent: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool
vars:
devstack_localrc:
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False
IRONIC_AUTOMATED_CLEAN_ENABLED: False
IRONIC_DEFAULT_RESCUE_INTERFACE: no-rescue
IRONIC_ENABLED_RESCUE_INTERFACES: "fake,no-rescue"
IRONIC_DEFAULT_BOOT_OPTION: netboot
- job:
name: ironic-tempest-functional-python3
description: ironic-tempest-functional-python3

2
zuul.d/project.yaml

@ -25,8 +25,6 @@
- ironic-tempest-ipa-partition-uefi-pxe_ipmitool
- ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode
- ironic-tempest-bios-ipmi-direct-tinyipa
- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-indirect
- ironic-tempest-ipa-partition-bios-agent_ipmitool-indirect
- ironic-tempest-bfv
- ironic-tempest-ipa-partition-uefi-pxe-grub2
- ironic-tempest-ipxe-ipv6:

Loading…
Cancel
Save