120 lines
5.7 KiB
Python
120 lines
5.7 KiB
Python
# Copyright 2019 OpenStack Foundation
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from tempest.lib import decorators
|
|
|
|
from trove_tempest_plugin.common import utils
|
|
from trove_tempest_plugin.common import waiters
|
|
from trove_tempest_plugin.tests.api.database.instances import base
|
|
|
|
|
|
class InstanceActionsTest(base.WithInstanceBaseTest):
|
|
|
|
@decorators.idempotent_id('ace549b3-eee0-4502-bf20-7594d4bf4856')
|
|
def test_restart_server(self):
|
|
self.client.restart_db_instance(self.instance_id)
|
|
waiters.wait_for_db_instance_status(self.client, self.instance_id,
|
|
'ACTIVE')
|
|
|
|
@decorators.idempotent_id('39eff887-008b-4a93-bead-6ddc969117c3')
|
|
def test_resize_server(self):
|
|
self.client.resize_db_instance(self.instance_id,
|
|
self.resize_flavor_id)
|
|
waiters.wait_for_db_instance_status(self.client, self.instance_id,
|
|
'ACTIVE')
|
|
instance = self.client.show_db_instance(self.instance_id)['instance']
|
|
self.assertEqual(self.resize_flavor_id, instance['flavor']['id'])
|
|
|
|
@decorators.idempotent_id('bba1be08-409b-4916-b9a8-6ec03425cd6e')
|
|
def test_resize_volume(self):
|
|
new_size = 2
|
|
self.client.resize_db_instance_volume(self.instance_id, new_size)
|
|
waiters.wait_for_db_instance_status(self.client, self.instance_id,
|
|
'ACTIVE')
|
|
instance = self.client.show_db_instance(self.instance_id)['instance']
|
|
self.assertEqual(new_size, instance['volume']['size'])
|
|
|
|
@decorators.idempotent_id('215fbcbe-40d3-4a8f-9fe1-55ea9e8fb814')
|
|
def test_update_name(self):
|
|
new_name = 'new-name'
|
|
self.client.update_db_instance(self.instance_id, name=new_name)
|
|
waiters.wait_for_db_instance_status(self.client, self.instance_id,
|
|
'ACTIVE')
|
|
|
|
# Verify the name of the instance has changed
|
|
instance = self.client.show_db_instance(self.instance_id)['instance']
|
|
self.assertEqual(new_name, instance['name'])
|
|
|
|
@decorators.idempotent_id('38b5462a-308e-4cb8-9530-cc6741c95501')
|
|
def test_list_create_delete_database(self):
|
|
name = utils.rand_name()
|
|
self.client.create_database(self.instance_id, name=name)
|
|
databases = self.client.list_databases(self.instance_id)['databases']
|
|
databases = [x['name'] for x in databases]
|
|
self.assertIn(name, databases)
|
|
self.client.delete_database(self.instance_id, name=name)
|
|
databases = self.client.list_databases(self.instance_id)['databases']
|
|
databases = [x['name'] for x in databases]
|
|
self.assertNotIn(name, databases)
|
|
|
|
@decorators.idempotent_id('bf4840fe-8cf8-46a1-8371-13021e87c690')
|
|
def test_enable_disable_root(self):
|
|
root_show = self.client.root_show(self.instance_id)
|
|
self.assertFalse(root_show['rootEnabled'])
|
|
root_enable = self.client.root_enable(self.instance_id)
|
|
self.assertIn('password', list(root_enable['user'].keys()))
|
|
# TODO(sorrison) Test connection with root user/password
|
|
root_show = self.client.root_show(self.instance_id)
|
|
self.assertTrue(root_show['rootEnabled'])
|
|
self.client.root_disable(self.instance_id)
|
|
root_show = self.client.root_show(self.instance_id)
|
|
# Show root show's if root as ever been enabled so disabling should
|
|
# have no impact
|
|
self.assertTrue(root_show['rootEnabled'])
|
|
|
|
@decorators.idempotent_id('9f11d15b-9640-4c33-a7db-c78224763014')
|
|
def test_list_create_delete_user(self):
|
|
name = utils.rand_name()
|
|
self.client.create_user(self.instance_id, name=name, password='secret')
|
|
users = self.client.list_users(self.instance_id)['users']
|
|
users = [x['name'] for x in users]
|
|
self.assertIn(name, users)
|
|
self.client.delete_user(self.instance_id, name=name)
|
|
users = self.client.list_users(self.instance_id)['users']
|
|
users = [x['name'] for x in users]
|
|
self.assertNotIn(name, users)
|
|
|
|
@decorators.idempotent_id('6f8b8350-f2a9-47b2-a108-8e3653cb9b57')
|
|
def test_grant_revoke_list_access(self):
|
|
user = utils.rand_name()
|
|
db = utils.rand_name()
|
|
self.client.create_user(self.instance_id, name=user, password='secret')
|
|
self.client.create_database(self.instance_id, name=db)
|
|
access = self.client.show_user_access(self.instance_id, user)
|
|
self.assertEqual([], access['databases'])
|
|
self.client.grant_user_access(self.instance_id, user, [db])
|
|
access = self.client.show_user_access(self.instance_id, user)
|
|
access = [x['name'] for x in access['databases']]
|
|
self.assertIn(db, access)
|
|
self.client.revoke_user_access(self.instance_id, user, db)
|
|
access = self.client.show_user_access(self.instance_id, user)
|
|
access = [x['name'] for x in access['databases']]
|
|
self.assertNotIn(db, access)
|
|
|
|
@decorators.idempotent_id('b13ff6fb-6214-416b-8aea-23dc3c24d00e')
|
|
def test_list_backups(self):
|
|
backups = self.client.list_backups(self.instance_id)
|
|
self.assertEqual([], backups['backups'])
|