コード例 #1
0
    def test_create_instance(self, mock_glance, mock_cinder, mock_neutron,
                             mock_nova):
        nova_util = nova_helper.NovaHelper()
        instance = self.fake_server(self.instance_uuid)
        nova_util.nova.servers.create.return_value = instance
        nova_util.nova.servers.get.return_value = instance

        create_instance = nova_util.create_instance(self.source_node)
        self.assertIsNotNone(create_instance)
        self.assertEqual(create_instance, instance)

        # verify that the method create_instance will return None when
        # the method findall raises exception.
        nova_util.nova.keypairs.findall.side_effect = nvexceptions.NotFound(
            404)
        instance = nova_util.create_instance(self.source_node)
        self.assertIsNone(instance)
        nova_util.nova.keypairs.findall.side_effect = None

        # verify that the method create_instance will return None when
        # the method get raises exception.
        nova_util.glance.images.get.side_effect = glexceptions.NotFound(404)
        instance = nova_util.create_instance(self.source_node)
        self.assertIsNone(instance)
        nova_util.glance.images.get.side_effect = None

        # verify that the method create_instance will return None when
        # the method find raises exception.
        nova_util.nova.flavors.find.side_effect = nvexceptions.NotFound(404)
        instance = nova_util.create_instance(self.source_node)
        self.assertIsNone(instance)
        nova_util.nova.flavors.find.side_effect = None

        # verify that the method create_instance will return None when
        # the method get_security_group_id_from_name return None.
        with mock.patch.object(nova_util,
                               'get_security_group_id_from_name',
                               return_value=None) as mock_security_group_id:
            instance = nova_util.create_instance(self.source_node)
            self.assertIsNone(instance)
            mock_security_group_id.assert_called_once_with("default")

        # verify that the method create_instance will return None when
        # the method get_network_id_from_name return None.
        with mock.patch.object(nova_util,
                               'get_network_id_from_name',
                               return_value=None) as mock_get_network_id:
            instance = nova_util.create_instance(self.source_node)
            self.assertIsNone(instance)
            mock_get_network_id.assert_called_once_with("demo-net")

        # verify that the method create_instance will not return None when
        # the method wait_for_instance_status return True.
        with mock.patch.object(nova_util,
                               'wait_for_instance_status',
                               return_value=True) as mock_instance_status:
            instance = nova_util.create_instance(self.source_node)
            self.assertIsNotNone(instance)
            mock_instance_status.assert_called_once_with(
                mock.ANY, ('ACTIVE', 'ERROR'), 5, 10)
コード例 #2
0
ファイル: stubs.py プロジェクト: zdj6373/ironic
 def update(self, image_id, **metadata):
     for i, image in enumerate(self._images):
         if image.id == str(image_id):
             for k, v in metadata.items():
                 setattr(self._images[i], k, v)
             return self._images[i]
     raise glance_exc.NotFound(image_id)
コード例 #3
0
ファイル: stubs.py プロジェクト: zdj6373/ironic
 def delete(self, image_id):
     for i, image in enumerate(self._images):
         if image.id == image_id:
             # When you delete an image from glance, it sets the status to
             # DELETED. If you try to delete a DELETED image, it raises
             # HTTPForbidden.
             image_data = self._images[i]
             if image_data.deleted:
                 raise glance_exc.Forbidden()
             image_data.deleted = True
             return
     raise glance_exc.NotFound(image_id)
コード例 #4
0
ファイル: test_instance.py プロジェクト: HuaiJiang/heat
    def test_instance_create_image_id_err(self):
        stack_name = 'test_instance_create_image_id_err_stack'
        (t, stack) = self._setup_test_stack(stack_name)

        # create an instance with non exist image Id
        t['Resources']['WebServer']['Properties']['ImageId'] = '1'
        instance = instances.Instance('instance_create_image_err',
                                      t['Resources']['WebServer'], stack)

        self._mock_get_image_id_fail('1', glance_exceptions.NotFound(404))

        self.m.ReplayAll()

        self.assertRaises(ValueError, instance.handle_create)

        self.m.VerifyAll()
コード例 #5
0
    def image_verify(self, image_id):
        """
        Verifies if image with image-id exists and is in active state

        Arguments:
          image_id(string): UUID of the image

        Returns:
          None
          Raises except if image not found or not in active state
        """
        img = self.image_get(image_id)
        if img['status'] != 'active':
            raise GlanceException.NotFound(
                "Image with image_id: %s not found in active state. Current State: %s"
                % (img['id'], img['status']))
コード例 #6
0
    def test_get_image_id_not_found(self):
        """Tests the get_image_id function while image is not found."""
        my_image = self.m.CreateMockAnything()
        img_name = str(uuid.uuid4())
        my_image.name = img_name
        self.glance_client.images = self.m.CreateMockAnything()
        self.glance_client.images.get(img_name).AndRaise(
            glance_exceptions.NotFound(404))
        filters = {'name': img_name}
        self.glance_client.images.list(filters=filters).MultipleTimes().\
            AndReturn([])
        self.m.ReplayAll()

        self.assertRaises(exception.ImageNotFound, glance_utils.get_image_id,
                          self.glance_client, img_name)
        self.m.VerifyAll()
コード例 #7
0
    def test_get_image_id_by_name_in_uuid(self):
        """Tests the get_image_id function by name in uuid."""
        my_image = self.m.CreateMockAnything()
        img_id = str(uuid.uuid4())
        img_name = str(uuid.uuid4())
        my_image.id = img_id
        my_image.name = img_name
        self.glance_client.images = self.m.CreateMockAnything()
        self.glance_client.images.get(img_name).AndRaise(
            glance_exceptions.NotFound(404))
        filters = {'name': img_name}
        self.glance_client.images.list(filters=filters).MultipleTimes().\
            AndReturn([my_image])
        self.m.ReplayAll()

        self.assertEqual(
            img_id, glance_utils.get_image_id(self.glance_client, img_name))
        self.m.VerifyAll()
コード例 #8
0
def _upload_file(glanceclient,
                 name,
                 path,
                 disk_format,
                 type_name,
                 skip_missing=False):
    image_tuple = collections.namedtuple('image', ['id'])
    try:
        if isinstance(glanceclient, real_glance_client):
            images = glanceclient.images.list(name=name,
                                              disk_format=disk_format)
            image = None
            for img in images:
                if ((img['name'] == name or img['id'] == name)
                        and img['disk_format'] == disk_format):
                    image = img
            if not image:
                raise exceptions.NotFound("No image found")
        else:
            # TODO(dprince) remove this
            # This code expects the python-openstackclient version of
            # "glanceclient" (which isn't pure python-glanceclient) and is
            # here for backwards compat until python-tripleoclient starts
            # using the Mistral API for this functionality.
            image = glanceclient.images.find(name=name,
                                             disk_format=disk_format)
    except exceptions.NotFound:
        if path:
            image = glanceclient.images.create(name=name,
                                               disk_format=disk_format,
                                               is_public=True,
                                               data=open(path, 'rb'))
        else:
            if skip_missing:
                image = image_tuple(None)
            else:
                raise ValueError("%s image not found in Glance, and no path "
                                 "specified." % type_name)
    return image
コード例 #9
0
ファイル: test_instance.py プロジェクト: carrierstack/heat
    def test_instance_create_image_id_err(self):
        stack_name = 'test_instance_create_image_id_err_stack'
        (tmpl, stack) = self._setup_test_stack(stack_name)

        # create an instance with non exist image Id
        tmpl.t['Resources']['WebServer']['Properties']['ImageId'] = '1'
        resource_defns = tmpl.resource_definitions(stack)
        instance = instances.Instance('instance_create_image_err',
                                      resource_defns['WebServer'], stack)

        self._mock_get_image_id_fail('1', glance_exceptions.NotFound(404))

        self.m.ReplayAll()

        create = scheduler.TaskRunner(instance.create)
        error = self.assertRaises(exception.ResourceFailure, create)
        self.assertEqual(
            'StackValidationFailed: Property error : WebServer: '
            'ImageId 404 (HTTP 404)',
            str(error))

        self.m.VerifyAll()
コード例 #10
0
 def get(self, image_id):
     raise glance_exc.NotFound(image_id)
コード例 #11
0
ファイル: stubs.py プロジェクト: zdj6373/ironic
 def get(self, image_id):
     for image in self._images:
         if image.id == str(image_id):
             return image
     raise glance_exc.NotFound(image_id)