コード例 #1
0
 def test_delete_not_found_during_delete(self):
     tc = self._create_resource('cluster', self.rsrc_defn, self.stack)
     fake_cluster = FakeTroveCluster()
     fake_cluster.task = {'name': 'NONE'}
     fake_cluster.delete = mock.Mock(side_effect=[troveexc.NotFound()])
     self.client.clusters.get.side_effect = [fake_cluster,
                                             fake_cluster,
                                             troveexc.NotFound()]
     scheduler.TaskRunner(tc.delete)()
     self.assertEqual((tc.DELETE, tc.COMPLETE), tc.state)
     self.assertEqual(1, fake_cluster.delete.call_count)
コード例 #2
0
 def test_validate_invalid_flavor(self):
     self.troveclient.flavors.get.side_effect = troveexc.NotFound()
     self.troveclient.flavors.find.side_effect = troveexc.NotFound()
     props = copy.deepcopy(self.tmpl['resources']['cluster']['properties'])
     props['instances'][0]['flavor'] = 'm1.small'
     self.rsrc_defn = self.rsrc_defn.freeze(properties=props)
     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, str(ex))
コード例 #3
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)
コード例 #4
0
 def test_instance_resource_not_found(self):
     t = template_format.parse(db_template)
     instance = self._setup_test_instance('dbinstance_del', t)
     self.client.instances.get.side_effect = [
         self.fake_instance, troveexc.NotFound(404)
     ]
     scheduler.TaskRunner(instance.create)()
     scheduler.TaskRunner(instance.delete)()
コード例 #5
0
    def test_instance_delete_overlimit(self):
        t = template_format.parse(db_template)
        instance = self._setup_test_instance('dbinstance_del', t)

        # Simulate an OverLimit exception
        self.client.instances.get.side_effect = [
            troveexc.RequestEntityTooLarge(), self.fake_instance,
            troveexc.NotFound(404)
        ]

        scheduler.TaskRunner(instance.create)()
        scheduler.TaskRunner(instance.delete)()
コード例 #6
0
ファイル: test_os_database.py プロジェクト: slackwei/heat
    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()
コード例 #7
0
ファイル: test_os_database.py プロジェクト: slackwei/heat
    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)
        self._stubout_check_create_complete(fake_dbinstance)

        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()
コード例 #8
0
ファイル: base.py プロジェクト: jcru/python-troveclient
    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(404, msg)
        elif num_matches > 1:
            raise exceptions.NoUniqueMatch
        else:
            return matches[0]
コード例 #9
0
 def test_delete_incorrect_status(self):
     tc = self._create_resource('cluster', self.rsrc_defn, self.stack)
     fake_cluster_bad = FakeTroveCluster()
     fake_cluster_bad.task = {'name': 'BUILDING'}
     fake_cluster_bad.delete = mock.Mock()
     fake_cluster_ok = FakeTroveCluster()
     fake_cluster_ok.task = {'name': 'NONE'}
     fake_cluster_ok.delete = mock.Mock()
     self.client.clusters.get.side_effect = [fake_cluster_bad,
                                             # two for cluster_delete method
                                             fake_cluster_bad,
                                             fake_cluster_ok,
                                             # for _refresh_cluster method
                                             troveexc.NotFound()]
     scheduler.TaskRunner(tc.delete)()
     self.assertEqual((tc.DELETE, tc.COMPLETE), tc.state)
     fake_cluster_bad.delete.assert_not_called()
     fake_cluster_ok.delete.assert_called_once_with()
コード例 #10
0
    def test_instance_restore_point(self):
        t = template_format.parse(db_template)
        t['Resources']['MySqlCloudDB']['Properties']['restore_point'] = "1234"
        instance = self._setup_test_instance('dbinstance_create', t)

        self.client.flavors.get.side_effect = [troveexc.NotFound()]
        self.client.flavors.find.return_value = FakeFlavor(1, '1GB')

        scheduler.TaskRunner(instance.create)()
        self.assertEqual((instance.CREATE, instance.COMPLETE), instance.state)

        users = [{
            "name": "testuser",
            "password": "******",
            "host": "%",
            "databases": [{
                "name": "validdb"
            }]
        }]
        databases = [{
            "collate": "utf8_general_ci",
            "character_set": "utf8",
            "name": "validdb"
        }]
        self.client.instances.create.assert_called_once_with(
            '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)
コード例 #11
0
ファイル: test_os_database.py プロジェクト: slackwei/heat
    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)
        self._stubout_check_create_complete(fake_dbinstance)

        # delete call
        self.fc.instances.get(fake_dbinstance.id).AndReturn(fake_dbinstance)
        self.m.StubOutWithMock(fake_dbinstance, 'delete')
        fake_dbinstance.delete().AndReturn(None)

        # Simulate an OverLimit exception
        self.fc.instances.get(fake_dbinstance.id).AndRaise(
            troveexc.RequestEntityTooLarge)
        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()