Пример #1
0
 def test_validate_invalid_flavor(self):
     self.troveclient.flavors.get.side_effect = troveexc.NotFound()
     self.troveclient.flavors.find.side_effect = troveexc.NotFound()
     self.rsrc_defn['Properties']['instances'][0]['flavor'] = 'm1.small'
     tc = cluster.TroveCluster('cluster', self.rsrc_defn, self.stack)
     ex = self.assertRaises(exception.StackValidationFailed, tc.validate)
     error_msg = ("Property error: "
                  "resources.cluster.properties.instances[0].flavor: "
                  "Error validating value 'm1.small': Not Found (HTTP 404)")
     self.assertEqual(error_msg, six.text_type(ex))
Пример #2
0
 def test_delete_not_found(self):
     tc = self._create_resource('cluster', self.rsrc_defn, self.stack)
     self.client.clusters.get.side_effect = troveexc.NotFound()
     scheduler.TaskRunner(tc.delete)()
     self.assertEqual((tc.DELETE, tc.COMPLETE), tc.state)
     self.client.clusters.get.assert_called_with(tc.resource_id)
     self.assertEqual(2, self.client.clusters.get.call_count)
    def test_osdatabase_resource_not_found(self):
        fake_dbinstance = FakeDBInstance()
        t = template_format.parse(db_template)
        instance = self._setup_test_clouddbinstance('dbinstance_del', t)
        self._stubout_create(instance, fake_dbinstance)
        scheduler.TaskRunner(instance.create)()
        self.m.StubOutWithMock(self.fc.instances, 'get')
        self.fc.instances.get(12345).AndRaise(
            troveexc.NotFound(404))

        self.m.ReplayAll()
        scheduler.TaskRunner(instance.delete)()
        self.m.VerifyAll()
Пример #4
0
    def test_osdatabase_restore_point(self):
        fake_dbinstance = FakeDBInstance()
        t = template_format.parse(db_template)
        t['Resources']['MySqlCloudDB']['Properties']['restore_point'] = "1234"
        instance = self._setup_test_clouddbinstance('dbinstance_create', t)

        trove.TroveClientPlugin._create().AndReturn(self.fc)
        self.fc.flavors = self.m.CreateMockAnything()
        self.m.StubOutWithMock(self.fc.flavors, "get")
        self.fc.flavors.get(u'1GB').AndRaise(troveexc.NotFound())
        self.m.StubOutWithMock(self.fc.flavors, "find")
        self.fc.flavors.find(name=u'1GB').AndReturn(FakeFlavor(1, '1GB'))
        self.fc.instances = self.m.CreateMockAnything()
        self.m.StubOutWithMock(self.fc.instances, 'create')
        users = [{
            "name": "testuser",
            "password": "******",
            "host": "%",
            "databases": [{
                "name": "validdb"
            }]
        }]
        databases = [{
            "collate": "utf8_general_ci",
            "character_set": "utf8",
            "name": "validdb"
        }]
        self.fc.instances.create('test',
                                 1,
                                 volume={
                                     'size': 30
                                 },
                                 databases=databases,
                                 users=users,
                                 restorePoint={
                                     "backupRef": "1234"
                                 },
                                 availability_zone=None,
                                 datastore="SomeDStype",
                                 datastore_version="MariaDB-5.5",
                                 nics=[],
                                 replica_of=None,
                                 replica_count=None).AndReturn(fake_dbinstance)
        self.fc.instances.get(fake_dbinstance.id).AndReturn(fake_dbinstance)
        self.m.ReplayAll()

        scheduler.TaskRunner(instance.create)()
        self.assertEqual((instance.CREATE, instance.COMPLETE), instance.state)
        self.m.VerifyAll()
Пример #5
0
    def find(self, **kwargs):
        """Find a single item with attributes matching ``**kwargs``.

        This isn't very efficient: it loads the entire list then filters on
        the Python side.
        """
        matches = self.findall(**kwargs)
        num_matches = len(matches)
        if num_matches == 0:
            msg = "No %s matching %s." % (self.resource_class.__name__, kwargs)
            raise exceptions.NotFound(msg)
        elif num_matches > 1:
            raise exceptions.NoUniqueMatch()
        else:
            return matches[0]
Пример #6
0
    def test_osdatabase_delete(self):
        fake_dbinstance = FakeDBInstance()
        t = template_format.parse(db_template)
        instance = self._setup_test_clouddbinstance('dbinstance_del', t)
        self._stubout_create(instance, fake_dbinstance)
        self._stubout_check_create_complete(fake_dbinstance)
        self.fc.instances.get(fake_dbinstance.id).AndReturn(fake_dbinstance)
        self.m.StubOutWithMock(fake_dbinstance, 'delete')
        fake_dbinstance.delete().AndReturn(None)
        self.fc.instances.get(fake_dbinstance.id).AndReturn(None)
        self.fc.instances.get(fake_dbinstance.id).AndRaise(
            troveexc.NotFound(404))

        self.m.ReplayAll()

        scheduler.TaskRunner(instance.create)()
        scheduler.TaskRunner(instance.delete)()
        self.m.VerifyAll()
Пример #7
0
    def find(self, base_url=None, **kwargs):
        """Find a single item with attributes matching ``**kwargs``.

        :param base_url: if provided, the generated URL will be appended to it
        """
        kwargs = self._filter_kwargs(kwargs)

        rl = self._list(
            '%(base_url)s%(query)s' % {
                'base_url': self.build_url(base_url=base_url, **kwargs),
                'query': '?%s' % parse.urlencode(kwargs) if kwargs else '',
            }, self.collection_key)
        num = len(rl)

        if num == 0:
            msg = "No %s matching %s." % (self.resource_class.__name__, kwargs)
            raise exceptions.NotFound(404, msg)
        elif num > 1:
            raise exceptions.NoUniqueMatch
        else:
            return rl[0]
    def test_osdatabase_delete_overlimit(self):
        fake_dbinstance = FakeDBInstance()
        t = template_format.parse(db_template)
        instance = self._setup_test_clouddbinstance('dbinstance_del', t)
        self._stubout_create(instance, fake_dbinstance)
        scheduler.TaskRunner(instance.create)()
        self.m.StubOutWithMock(self.fc.instances, 'get')
        self.fc.instances.get(12345).AndReturn(fake_dbinstance)
        self.m.StubOutWithMock(fake_dbinstance, 'delete')
        fake_dbinstance.delete().AndReturn(None)

        # Simulate an OverLimit exception
        self.m.StubOutWithMock(fake_dbinstance, 'get')
        fake_dbinstance.get().AndRaise(
            troveexc.RequestEntityTooLarge)
        fake_dbinstance.get().AndReturn(None)
        fake_dbinstance.get().AndRaise(troveexc.NotFound(404))

        self.m.ReplayAll()
        scheduler.TaskRunner(instance.delete)()
        self.m.VerifyAll()
Пример #9
0
 def get(self, resource_id):
     for resource in self.resources:
         if resource.id == str(resource_id):
             return resource
     raise exceptions.NotFound(resource_id)