kernel_id and ramdisk_id parameters are not supported in novaclient create

remove them from ec2api

Signed-off-by: tikitavi <rtikitavi@gmail.com>
Change-Id: I0e647be2d3f1500b14deed72a64728a42a33db34
This commit is contained in:
tikitavi 2023-06-22 12:59:56 +03:00
parent aa9c1780de
commit a27cf4120e
2 changed files with 21 additions and 37 deletions

View File

@ -85,6 +85,12 @@ def run_instances(context, image_id, min_count, max_count,
network_interface=None, iam_instance_profile=None,
ebs_optimized=None):
if ramdisk_id:
raise exception.InvalidAttribute(attr='ramdisk_id')
if kernel_id:
raise exception.InvalidAttribute(attr='kernel_id')
_check_min_max_count(min_count, max_count)
if client_token:
@ -100,8 +106,7 @@ def run_instances(context, image_id, min_count, max_count,
LOG.error('Result: %s', reservations)
return reservations['reservationSet'][0]
os_image, os_kernel_id, os_ramdisk_id = _parse_image_parameters(
context, image_id, kernel_id, ramdisk_id)
os_image = _parse_image_parameters(context, image_id)
nova = clients.nova(context)
os_flavor = _get_os_flavor(instance_type, nova)
@ -143,7 +148,6 @@ def run_instances(context, image_id, min_count, max_count,
'%s-%s' % (ec2_reservation_id, launch_index),
os_image.id, os_flavor,
min_count=1, max_count=1,
kernel_id=os_kernel_id, ramdisk_id=os_ramdisk_id,
availability_zone=availability_zone,
block_device_mapping_v2=bdm,
key_name=key_name, userdata=user_data,
@ -872,11 +876,7 @@ def _check_min_max_count(min_count, max_count):
raise exception.InvalidParameterValue(msg)
def _parse_image_parameters(context, image_id, kernel_id, ramdisk_id):
os_kernel_id = (ec2utils.get_os_image(context, kernel_id).id
if kernel_id else None)
os_ramdisk_id = (ec2utils.get_os_image(context, ramdisk_id).id
if ramdisk_id else None)
def _parse_image_parameters(context, image_id):
os_image = ec2utils.get_os_image(context, image_id)
if _cloud_get_image_state(os_image) != 'available':
@ -884,7 +884,7 @@ def _parse_image_parameters(context, image_id, kernel_id, ramdisk_id):
msg = _('Image must be available')
raise exception.InvalidAMIIDUnavailable(message=msg)
return os_image, os_kernel_id, os_ramdisk_id
return os_image
def _parse_block_device_mapping(context, block_device_mapping):

View File

@ -55,8 +55,7 @@ class InstanceTestCase(base.ApiTestCase):
describe_instances):
"""Run instance with various network interface settings."""
self.set_mock_db_items(
fakes.DB_SUBNET_1, fakes.DB_NETWORK_INTERFACE_1, fakes.DB_IMAGE_1,
fakes.DB_IMAGE_ARI_1, fakes.DB_IMAGE_AKI_1)
fakes.DB_SUBNET_1, fakes.DB_NETWORK_INTERFACE_1, fakes.DB_IMAGE_1)
self.glance.images.get.return_value = fakes.OSImage(fakes.OS_IMAGE_1)
self.network_interface_api.create_network_interface.return_value = (
{'networkInterface': fakes.EC2_NETWORK_INTERFACE_1})
@ -114,7 +113,6 @@ class InstanceTestCase(base.ApiTestCase):
fakes.EC2_INSTANCE_1['privateDnsName'],
fakes.ID_OS_IMAGE_1, self.fake_flavor,
min_count=1, max_count=1,
kernel_id=None, ramdisk_id=None,
availability_zone=None,
block_device_mapping_v2=[],
security_groups=None,
@ -240,7 +238,6 @@ class InstanceTestCase(base.ApiTestCase):
'%s-%s' % (fakes.ID_EC2_RESERVATION_1, launch_index),
fakes.ID_OS_IMAGE_1, self.fake_flavor,
min_count=1, max_count=1,
kernel_id=None, ramdisk_id=None,
availability_zone=None,
block_device_mapping_v2=[],
security_groups=None,
@ -270,13 +267,10 @@ class InstanceTestCase(base.ApiTestCase):
def test_run_instances_other_parameters(self, get_ec2_classic_os_network,
describe_instances,
parse_block_device_mapping):
self.set_mock_db_items(
fakes.DB_IMAGE_1, fakes.DB_IMAGE_AKI_1, fakes.DB_IMAGE_ARI_1)
self.set_mock_db_items(fakes.DB_IMAGE_1)
self.glance.images.get.side_effect = (
tools.get_by_1st_arg_getter({
fakes.ID_OS_IMAGE_1: fakes.OSImage(fakes.OS_IMAGE_1),
fakes.ID_OS_IMAGE_AKI_1: fakes.OSImage(fakes.OS_IMAGE_AKI_1),
fakes.ID_OS_IMAGE_ARI_1: fakes.OSImage(fakes.OS_IMAGE_ARI_1)}))
fakes.ID_OS_IMAGE_1: fakes.OSImage(fakes.OS_IMAGE_1)}))
get_ec2_classic_os_network.return_value = {'id': fakes.random_os_id()}
user_data = base64.b64decode(fakes.USER_DATA_INSTANCE_2)
parse_block_device_mapping.return_value = []
@ -291,8 +285,6 @@ class InstanceTestCase(base.ApiTestCase):
{'ImageId': fakes.ID_EC2_IMAGE_1,
'InstanceType': 'fake_flavor',
'MinCount': '1', 'MaxCount': '1',
'KernelId': fakes.ID_EC2_IMAGE_AKI_1,
'RamdiskId': fakes.ID_EC2_IMAGE_ARI_1,
'SecurityGroup.1': 'default',
'Placement.AvailabilityZone': 'fake_zone',
'ClientToken': 'fake_client_token',
@ -304,8 +296,7 @@ class InstanceTestCase(base.ApiTestCase):
self.nova.servers.create.assert_called_once_with(
mock.ANY, mock.ANY, mock.ANY, min_count=1, max_count=1,
userdata=user_data, kernel_id=fakes.ID_OS_IMAGE_AKI_1,
ramdisk_id=fakes.ID_OS_IMAGE_ARI_1, key_name=None,
userdata=user_data, key_name=None,
block_device_mapping_v2=[],
availability_zone='fake_zone', security_groups=['default'],
**extra_kwargs)
@ -540,7 +531,6 @@ class InstanceTestCase(base.ApiTestCase):
fakes.EC2_INSTANCE_DEFAULT['privateDnsName'],
fakes.ID_OS_IMAGE_2, self.fake_flavor,
min_count=1, max_count=1,
kernel_id=None, ramdisk_id=None,
availability_zone=None,
block_device_mapping_v2=[],
security_groups=None,
@ -1428,27 +1418,21 @@ class InstancePrivateTestCase(base.BaseTestCase):
# NOTE(ft): check normal flow
os_image = fakes.OSImage(fakes.OS_IMAGE_1)
get_os_image.side_effect = [
fakes.OSImage(fakes.OS_IMAGE_AKI_1),
fakes.OSImage(fakes.OS_IMAGE_ARI_1),
os_image]
get_os_image.side_effect = [os_image]
self.assertEqual(
(os_image, fakes.ID_OS_IMAGE_AKI_1, fakes.ID_OS_IMAGE_ARI_1),
(os_image),
instance_api._parse_image_parameters(
fake_context, fakes.ID_EC2_IMAGE_1,
fakes.ID_EC2_IMAGE_AKI_1, fakes.ID_EC2_IMAGE_ARI_1))
fake_context, fakes.ID_EC2_IMAGE_1))
get_os_image.assert_has_calls(
[mock.call(fake_context, fakes.ID_EC2_IMAGE_AKI_1),
mock.call(fake_context, fakes.ID_EC2_IMAGE_ARI_1),
mock.call(fake_context, fakes.ID_EC2_IMAGE_1)])
[mock.call(fake_context, fakes.ID_EC2_IMAGE_1)])
get_os_image.side_effect = None
get_os_image.return_value = os_image
get_os_image.reset_mock()
self.assertEqual(
(os_image, None, None),
(os_image),
instance_api._parse_image_parameters(
fake_context, fakes.ID_EC2_IMAGE_1, None, None))
fake_context, fakes.ID_EC2_IMAGE_1))
get_os_image.assert_called_once_with(
fake_context, fakes.ID_EC2_IMAGE_1)
@ -1461,7 +1445,7 @@ class InstancePrivateTestCase(base.BaseTestCase):
self.assertRaises(
exception.InvalidAMIIDUnavailable,
instance_api._parse_image_parameters,
fake_context, fakes.random_ec2_id('ami'), None, None)
fake_context, fakes.random_ec2_id('ami'))
os_image.status = 'active'
os_image.image_state = 'decrypting'
@ -1469,7 +1453,7 @@ class InstancePrivateTestCase(base.BaseTestCase):
self.assertRaises(
exception.InvalidAMIIDUnavailable,
instance_api._parse_image_parameters,
fake_context, fakes.random_ec2_id('ami'), None, None)
fake_context, fakes.random_ec2_id('ami'))
@mock.patch('ec2api.db.api.IMPL')
def test_parse_block_device_mapping(self, db_api):