Merge "Change [agent]image_download_source=http"
This commit is contained in:
commit
9341ca4ef7
@ -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.
|
# 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_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
|
# Functions
|
||||||
# ---------
|
# ---------
|
||||||
@ -811,7 +816,12 @@ function is_ansible_with_tinyipa {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function is_glance_configuration_required {
|
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
|
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_storage_backend $IRONIC_DEPLOY_LOGS_STORAGE_BACKEND
|
||||||
iniset $IRONIC_CONF_FILE agent deploy_logs_local_path $IRONIC_DEPLOY_LOGS_LOCAL_PATH
|
iniset $IRONIC_CONF_FILE agent deploy_logs_local_path $IRONIC_DEPLOY_LOGS_LOCAL_PATH
|
||||||
# Set image_download_source for direct interface
|
# 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
|
# Configure JSON RPC backend
|
||||||
iniset $IRONIC_CONF_FILE DEFAULT rpc_transport $IRONIC_RPC_TRANSPORT
|
iniset $IRONIC_CONF_FILE DEFAULT rpc_transport $IRONIC_RPC_TRANSPORT
|
||||||
iniset $IRONIC_CONF_FILE json_rpc port $IRONIC_JSON_RPC_PORT
|
iniset $IRONIC_CONF_FILE json_rpc port $IRONIC_JSON_RPC_PORT
|
||||||
|
@ -105,7 +105,7 @@ opts = [
|
|||||||
('local', _('Same as "http", but HTTP images '
|
('local', _('Same as "http", but HTTP images '
|
||||||
'are also cached locally, converted '
|
'are also cached locally, converted '
|
||||||
'and served from the conductor'))],
|
'and served from the conductor'))],
|
||||||
default='swift',
|
default='http',
|
||||||
mutable=True,
|
mutable=True,
|
||||||
help=_('Specifies whether direct deploy interface should try '
|
help=_('Specifies whether direct deploy interface should try '
|
||||||
'to use the image source directly or if ironic should '
|
'to use the image source directly or if ironic should '
|
||||||
|
@ -175,6 +175,7 @@ class TestAgentMethods(db_base.DbTestCase):
|
|||||||
|
|
||||||
@mock.patch.object(deploy_utils, 'check_for_missing_params', autospec=True)
|
@mock.patch.object(deploy_utils, 'check_for_missing_params', autospec=True)
|
||||||
def test_validate_http_provisioning_not_http(self, utils_mock):
|
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 = self.node.instance_info
|
||||||
i_info['image_source'] = '0448fa34-4db1-407b-a051-6357d5f86c59'
|
i_info['image_source'] = '0448fa34-4db1-407b-a051-6357d5f86c59'
|
||||||
self.node.instance_info = i_info
|
self.node.instance_info = i_info
|
||||||
@ -182,7 +183,6 @@ class TestAgentMethods(db_base.DbTestCase):
|
|||||||
utils_mock.assert_not_called()
|
utils_mock.assert_not_called()
|
||||||
|
|
||||||
def test_validate_http_provisioning_missing_args(self):
|
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')
|
CONF.set_override('http_url', None, group='deploy')
|
||||||
i_info = self.node.instance_info
|
i_info = self.node.instance_info
|
||||||
i_info['image_source'] = '0448fa34-4db1-407b-a051-6357d5f86c59'
|
i_info['image_source'] = '0448fa34-4db1-407b-a051-6357d5f86c59'
|
||||||
|
@ -1747,6 +1747,7 @@ class TestBuildInstanceInfoForDeploy(db_base.DbTestCase):
|
|||||||
self.node = obj_utils.create_test_node(self.context,
|
self.node = obj_utils.create_test_node(self.context,
|
||||||
boot_interface='pxe',
|
boot_interface='pxe',
|
||||||
deploy_interface='direct')
|
deploy_interface='direct')
|
||||||
|
cfg.CONF.set_override('image_download_source', 'swift', group='agent')
|
||||||
|
|
||||||
@mock.patch.object(image_service.HttpImageService, 'validate_href',
|
@mock.patch.object(image_service.HttpImageService, 'validate_href',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
|
@ -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.
|
@ -112,6 +112,7 @@
|
|||||||
tempest_concurrency: 2
|
tempest_concurrency: 2
|
||||||
devstack_localrc:
|
devstack_localrc:
|
||||||
FORCE_CONFIG_DRIVE: False
|
FORCE_CONFIG_DRIVE: False
|
||||||
|
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
|
||||||
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
||||||
IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
|
IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
|
||||||
IRONIC_DEFAULT_RESCUE_INTERFACE: agent
|
IRONIC_DEFAULT_RESCUE_INTERFACE: agent
|
||||||
@ -128,8 +129,6 @@
|
|||||||
# a small root partition, so use /opt which is mounted from a bigger
|
# a small root partition, so use /opt which is mounted from a bigger
|
||||||
# ephemeral partition on such nodes
|
# ephemeral partition on such nodes
|
||||||
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
|
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
|
||||||
SWIFT_ENABLE_TEMPURLS: True
|
|
||||||
SWIFT_TEMPURL_KEY: secretkey
|
|
||||||
devstack_services:
|
devstack_services:
|
||||||
n-api: False
|
n-api: False
|
||||||
n-api-meta: False
|
n-api-meta: False
|
||||||
@ -141,10 +140,10 @@
|
|||||||
n-sch: False
|
n-sch: False
|
||||||
nova: False
|
nova: False
|
||||||
placement-api: False
|
placement-api: False
|
||||||
s-account: True
|
s-account: False
|
||||||
s-container: True
|
s-container: False
|
||||||
s-object: True
|
s-object: False
|
||||||
s-proxy: True
|
s-proxy: False
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: ironic-standalone-redfish
|
name: ironic-standalone-redfish
|
||||||
@ -171,6 +170,7 @@
|
|||||||
tempest_concurrency: 2
|
tempest_concurrency: 2
|
||||||
devstack_localrc:
|
devstack_localrc:
|
||||||
FORCE_CONFIG_DRIVE: False
|
FORCE_CONFIG_DRIVE: False
|
||||||
|
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
|
||||||
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
||||||
IRONIC_DEPLOY_DRIVER: redfish
|
IRONIC_DEPLOY_DRIVER: redfish
|
||||||
IRONIC_ENABLED_BOOT_INTERFACES: "ipxe,redfish-virtual-media"
|
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
|
# a small root partition, so use /opt which is mounted from a bigger
|
||||||
# ephemeral partition on such nodes
|
# ephemeral partition on such nodes
|
||||||
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
|
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
|
||||||
SWIFT_ENABLE_TEMPURLS: True
|
|
||||||
SWIFT_TEMPURL_KEY: secretkey
|
|
||||||
devstack_services:
|
devstack_services:
|
||||||
n-api: False
|
n-api: False
|
||||||
n-api-meta: False
|
n-api-meta: False
|
||||||
@ -202,10 +200,10 @@
|
|||||||
n-sch: False
|
n-sch: False
|
||||||
nova: False
|
nova: False
|
||||||
placement-api: False
|
placement-api: False
|
||||||
s-account: True
|
s-account: False
|
||||||
s-container: True
|
s-container: False
|
||||||
s-object: True
|
s-object: False
|
||||||
s-proxy: True
|
s-proxy: False
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: ironic-tempest-partition-bios-redfish-pxe
|
name: ironic-tempest-partition-bios-redfish-pxe
|
||||||
@ -384,30 +382,6 @@
|
|||||||
s-object: True
|
s-object: True
|
||||||
s-proxy: 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:
|
- job:
|
||||||
name: ironic-tempest-functional-python3
|
name: ironic-tempest-functional-python3
|
||||||
description: ironic-tempest-functional-python3
|
description: ironic-tempest-functional-python3
|
||||||
|
@ -25,8 +25,6 @@
|
|||||||
- ironic-tempest-ipa-partition-uefi-pxe_ipmitool
|
- ironic-tempest-ipa-partition-uefi-pxe_ipmitool
|
||||||
- ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode
|
- ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode
|
||||||
- ironic-tempest-bios-ipmi-direct-tinyipa
|
- 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-bfv
|
||||||
- ironic-tempest-ipa-partition-uefi-pxe-grub2
|
- ironic-tempest-ipa-partition-uefi-pxe-grub2
|
||||||
- ironic-tempest-ipxe-ipv6:
|
- ironic-tempest-ipxe-ipv6:
|
||||||
|
Loading…
Reference in New Issue
Block a user