Exemplo n.º 1
0
    def _test_describe_new_instance_then_its_image(self, image_project_id):
        os_instance_id = fakes.random_os_id()
        os_image_id = fakes.random_os_id()
        os_instance = {
            'id': os_instance_id,
            'flavor': {'id': 'fake'},
            'image': {'id': os_image_id},
        }
        os_image = {
            'id': os_image_id,
            'owner': image_project_id,
            'is_public': True,
        }
        self.nova_admin.servers.list.return_value = [
            fakes.OSInstance_full(os_instance)]
        self.glance.images.list.return_value = [fakes.OSImage(os_image)]

        reservations = instance_api.describe_instances(self.context)
        instance = reservations['reservationSet'][0]['instancesSet'][0]
        image_id = instance['imageId']
        image = (image_api.describe_images(self.context, image_id=[image_id])
                 ['imagesSet'][0])
        self.assertEqual(image_id, image['imageId'])
        self.assertEqual(image_project_id, image['imageOwnerId'])
        expected_project_id = (fakes.ID_OS_PROJECT
                               if image_project_id == fakes.ID_OS_PROJECT else
                               None)
        self.assert_image_project(expected_project_id, image['imageId'])
Exemplo n.º 2
0
    def test_describe_new_instance_then_its_alien_image_attribute(self):
        os_instance_id = fakes.random_os_id()
        os_image_id = fakes.random_os_id()
        alien_project_id = fakes.random_os_id()
        os_instance = {
            'id': os_instance_id,
            'flavor': {'id': 'fake'},
            'image': {'id': os_image_id},
        }
        os_image = {
            'id': os_image_id,
            'owner': alien_project_id,
            'is_public': True,
        }
        self.nova_admin.servers.list.return_value = [
            fakes.OSInstance_full(os_instance)]
        self.glance.images.get.return_value = fakes.OSImage(os_image)

        reservations = instance_api.describe_instances(self.context)
        instance = reservations['reservationSet'][0]['instancesSet'][0]
        image_id = instance['imageId']

        # NOTE(ft): ensure that InvalidAMIID.NotFound is not raised
        self.assertRaises(exception.AuthFailure,
                          image_api.describe_image_attribute,
                          self.context, image_id, 'description')
Exemplo n.º 3
0
    def test_describe_new_instance_then_its_volume(self):
        os_instance_id = fakes.random_os_id()
        os_volume_id = fakes.random_os_id()
        os_instance = {
            'id': os_instance_id,
            'flavor': {
                'id': 'fake'
            },
            'volumes_attached': [{
                'id': os_volume_id
            }],
        }
        os_volume = {
            'id': os_volume_id,
            'status': 'in-use',
            'attachments': [{
                'device': '/dev/vdb',
                'server_id': os_instance_id
            }],
        }
        self.nova_admin.servers.list.return_value = [
            fakes.OSInstance_full(os_instance)
        ]
        self.cinder.volumes.list.return_value = [fakes.OSVolume(os_volume)]

        reservations = instance_api.describe_instances(self.context)
        instance = reservations['reservationSet'][0]['instancesSet'][0]
        volume_id = instance['blockDeviceMapping'][0]['ebs']['volumeId']
        volume_api.describe_volumes(self.context, [volume_id])
Exemplo n.º 4
0
def _get_ec2_instance_and_reservation(context, os_instance_id):
    instance_id = ec2utils.os_id_to_ec2_id(context, 'i', os_instance_id)
    try:
        ec2_reservations = instance_api.describe_instances(
                context, [instance_id])
    except exception.InvalidInstanceIDNotFound:
        ec2_reservations = instance_api.describe_instances(
                context, filter=[{'name': 'instance-id',
                                  'value': [instance_id]}])
    if (len(ec2_reservations['reservationSet']) != 1 or
            len(ec2_reservations['reservationSet'][0]['instancesSet']) != 1):
        LOG.error(_('Failed to get metadata for instance id: %s'),
                  os_instance_id)
        raise exception.EC2MetadataNotFound()

    ec2_reservation = ec2_reservations['reservationSet'][0]
    ec2_instance = ec2_reservation['instancesSet'][0]

    return ec2_instance, ec2_reservation
    def test_describe_new_instance_then_its_volume(self):
        os_instance_id = fakes.random_os_id()
        os_volume_id = fakes.random_os_id()
        os_instance = {
            'id': os_instance_id,
            'flavor': {'id': 'fake'},
            'volumes_attached': [{'id': os_volume_id}],
        }
        os_volume = {
            'id': os_volume_id,
            'status': 'in-use',
            'attachments': [{'device': '/dev/vdb',
                             'server_id': os_instance_id}],
        }
        self.nova_admin.servers.list.return_value = [
            fakes.OSInstance_full(os_instance)]
        self.cinder.volumes.list.return_value = [
            fakes.OSVolume(os_volume)]

        reservations = instance_api.describe_instances(self.context)
        instance = reservations['reservationSet'][0]['instancesSet'][0]
        volume_id = instance['blockDeviceMapping'][0]['ebs']['volumeId']
        volume_api.describe_volumes(self.context, [volume_id])