예제 #1
0
 def test_check_complete_name(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {"name": "changed"}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.name = "changed"
     self.assertTrue(trove.check_update_complete(updates))
     mock_client().instances.edit.assert_called_once_with(mock_instance,
                                                          name="changed")
예제 #2
0
 def test_check_complete_name(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {"name": "changed"}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.name = "changed"
     self.assertTrue(trove.check_update_complete(updates))
     mock_client().instances.edit.assert_called_once_with(mock_instance,
                                                          name="changed")
예제 #3
0
 def test_check_complete_size(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE",
                               volume={'size': 24},
                               name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {"size": 42}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "RESIZING"
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "ACTIVE"
     mock_instance.volume = {'size': 42}
     self.assertTrue(trove.check_update_complete(updates))
예제 #4
0
 def test_check_complete_flavor(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE",
                               flavor={'id': 4567},
                               name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {"flavor": 1234}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "RESIZING"
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "ACTIVE"
     mock_instance.flavor = {'id': 1234}
     self.assertTrue(trove.check_update_complete(updates))
예제 #5
0
 def test_check_complete_flavor(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", flavor={'id': 4567},
                               name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {
         "flavor": 1234
     }
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "RESIZING"
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "ACTIVE"
     mock_instance.flavor = {'id': 1234}
     self.assertTrue(trove.check_update_complete(updates))
예제 #6
0
 def test_check_client_exceptions(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE")
     mock_client().instances.get.return_value = mock_instance
     mock_plugin().is_client_exception.return_value = True
     mock_plugin().is_over_limit.side_effect = [True, False]
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     with mock.patch.object(trove, "_update_flavor") as mupdate:
         mupdate.side_effect = [Exception("test"),
                                Exception("No change was requested "
                                          "because I'm testing")]
         self.assertFalse(trove.check_update_complete({"foo": "bar"}))
         self.assertFalse(trove.check_update_complete({"foo": "bar"}))
         self.assertEqual(2, mupdate.call_count)
         self.assertEqual(2, mock_plugin().is_client_exception.call_count)
예제 #7
0
 def test_check_complete_size(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", volume={'size': 24},
                               name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {
         "size": 42
     }
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "RESIZING"
     self.assertFalse(trove.check_update_complete(updates))
     mock_instance.status = "ACTIVE"
     mock_instance.volume = {'size': 42}
     self.assertTrue(trove.check_update_complete(updates))
예제 #8
0
 def test_check_client_exceptions(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE")
     mock_client().instances.get.return_value = mock_instance
     mock_plugin().is_client_exception.return_value = True
     mock_plugin().is_over_limit.side_effect = [True, False]
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     with mock.patch.object(trove, "_update_flavor") as mupdate:
         mupdate.side_effect = [
             Exception("test"),
             Exception("No change was requested "
                       "because I'm testing")
         ]
         self.assertFalse(trove.check_update_complete({"foo": "bar"}))
         self.assertFalse(trove.check_update_complete({"foo": "bar"}))
         self.assertEqual(2, mupdate.call_count)
         self.assertEqual(2, mock_plugin().is_client_exception.call_count)
예제 #9
0
 def test_check_complete_users(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     mock_plugin().is_client_exception.return_value = False
     mock_client().users.get.return_value = users.User(
         None, {
             "databases": [{
                 "name": "bar"
             }, {
                 "name": "buzz"
             }],
             "name": "baz"
         },
         loaded=True)
     updates = {
         'users': [{
             'databases': ['bar', 'biff'],
             'name': 'baz',
             'password': '******'
         }, {
             'ACTION': 'CREATE',
             'databases': ['biff', 'bar'],
             'name': 'user2',
             'password': '******'
         }, {
             'ACTION': 'DELETE',
             'name': 'deleted'
         }]
     }
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertTrue(trove.check_update_complete(updates))
     create_calls = [
         mock.call(mock_instance,
                   [{
                       'password': '******',
                       'databases': [{
                           'name': 'biff'
                       }, {
                           'name': 'bar'
                       }],
                       'name': 'user2'
                   }])
     ]
     delete_calls = [mock.call(mock_instance, 'deleted')]
     mock_client().users.create.assert_has_calls(create_calls)
     mock_client().users.delete.assert_has_calls(delete_calls)
     self.assertEqual(1, mock_client().users.create.call_count)
     self.assertEqual(1, mock_client().users.delete.call_count)
     updateattr = mock_client().users.update_attributes
     updateattr.assert_called_once_with(mock_instance,
                                        'baz',
                                        newuserattr={'password': '******'},
                                        hostname=mock.ANY)
     mock_client().users.grant.assert_called_once_with(
         mock_instance, 'baz', ['biff'])
     mock_client().users.revoke.assert_called_once_with(
         mock_instance, 'baz', ['buzz'])
예제 #10
0
 def test_check_complete_users(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     mock_plugin().is_client_exception.return_value = False
     mock_client().users.get.return_value = users.User(None, {
         "databases": [{
             "name": "bar"
         }, {
             "name": "buzz"
         }],
         "name": "baz"
         }, loaded=True)
     updates = {
         'users': [{
             'databases': ['bar', 'biff'],
             'name': 'baz',
             'password': '******'
         }, {
             'ACTION': 'CREATE',
             'databases': ['biff', 'bar'],
             'name': 'user2',
             'password': '******'
         }, {
             'ACTION': 'DELETE',
             'name': 'deleted'
         }]}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertTrue(trove.check_update_complete(updates))
     create_calls = [
         mock.call(mock_instance, [{'password': '******',
                                    'databases': [{'name': 'biff'},
                                                  {'name': 'bar'}],
                                    'name': 'user2'}])
     ]
     delete_calls = [
         mock.call(mock_instance, 'deleted')
     ]
     mock_client().users.create.assert_has_calls(create_calls)
     mock_client().users.delete.assert_has_calls(delete_calls)
     self.assertEqual(1, mock_client().users.create.call_count)
     self.assertEqual(1, mock_client().users.delete.call_count)
     updateattr = mock_client().users.update_attributes
     updateattr.assert_called_once_with(
         mock_instance, 'baz', newuserattr={'password': '******'},
         hostname=mock.ANY)
     mock_client().users.grant.assert_called_once_with(
         mock_instance, 'baz', ['biff'])
     mock_client().users.revoke.assert_called_once_with(
         mock_instance, 'baz', ['buzz'])
예제 #11
0
 def test_check_complete_databases(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {
         'databases': [
             {'name': 'bar', "character_set": "ascii"},
             {'ACTION': 'CREATE', 'name': 'baz'},
             {'ACTION': 'DELETE', 'name': 'biff'}
         ]}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertTrue(trove.check_update_complete(updates))
     mcreate = mock_client().databases.create
     mdelete = mock_client().databases.delete
     mcreate.assert_called_once_with(mock_instance, [{'name': 'baz'}])
     mdelete.assert_called_once_with(mock_instance, 'biff')
예제 #12
0
 def test_check_complete_databases(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="ACTIVE", name="mock_instance")
     mock_client().instances.get.return_value = mock_instance
     updates = {
         'databases': [{
             'name': 'bar',
             "character_set": "ascii"
         }, {
             'ACTION': 'CREATE',
             'name': 'baz'
         }, {
             'ACTION': 'DELETE',
             'name': 'biff'
         }]
     }
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertTrue(trove.check_update_complete(updates))
     mcreate = mock_client().databases.create
     mdelete = mock_client().databases.delete
     mcreate.assert_called_once_with(mock_instance, [{'name': 'baz'}])
     mdelete.assert_called_once_with(mock_instance, 'biff')
예제 #13
0
 def test_check_complete_status(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="RESIZING")
     mock_client().instances.get.return_value = mock_instance
     updates = {"foo": "bar"}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
예제 #14
0
 def test_check_complete_none(self, mock_client, mock_plugin):
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertTrue(trove.check_update_complete({}))
예제 #15
0
 def test_check_complete_status(self, mock_client, mock_plugin):
     mock_instance = mock.Mock(status="RESIZING")
     mock_client().instances.get.return_value = mock_instance
     updates = {"foo": "bar"}
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertFalse(trove.check_update_complete(updates))
예제 #16
0
 def test_check_complete_none(self, mock_client, mock_plugin):
     trove = os_database.OSDBInstance('test', self._rdef, self._stack)
     self.assertTrue(trove.check_update_complete({}))