summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Malik <pmalik@tesora.com>2016-04-12 14:55:39 -0400
committerAmrith Kumar <amrith@tesora.com>2016-05-06 11:33:02 -0400
commit0c64fc64d8cff59d24b4883b9057de3fe8e2a224 (patch)
tree6a9ef422b4e53690e4a5765ba97add946c5eb5f2
parenta3f38d518709f2d496e87074443699dec6b96ce5 (diff)
downloadtrove-0c64fc64d8cff59d24b4883b9057de3fe8e2a224.tar.gz
Do not remove root user on disable
The existence of the root user (with remote access) is used to determine whether root was ever enabled on a restored instance. Do not remove it, just generate a new random password for it. Change-Id: I8a4321ac062b1ec565945b49dbb7c619b6da867f Closes-Bug: 1549600 (cherry picked from commit 52bc1ab9c89cdca7c2556edb373ce3b59ace0295)
-rw-r--r--releasenotes/notes/mysql-root-fix-35079552e25170ca.yaml4
-rw-r--r--trove/guestagent/datastore/mysql_common/service.py5
-rw-r--r--trove/tests/unittests/guestagent/test_dbaas.py15
3 files changed, 12 insertions, 12 deletions
diff --git a/releasenotes/notes/mysql-root-fix-35079552e25170ca.yaml b/releasenotes/notes/mysql-root-fix-35079552e25170ca.yaml
new file mode 100644
index 00000000..0033696d
--- /dev/null
+++ b/releasenotes/notes/mysql-root-fix-35079552e25170ca.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+ - Do not remove MySQL root user on root-disable so that the
+ proper status can be reported on restore. Bug 1549600
diff --git a/trove/guestagent/datastore/mysql_common/service.py b/trove/guestagent/datastore/mysql_common/service.py
index 90a83ee2..e438116a 100644
--- a/trove/guestagent/datastore/mysql_common/service.py
+++ b/trove/guestagent/datastore/mysql_common/service.py
@@ -1062,7 +1062,6 @@ class BaseMySqlRootAccess(object):
return user.serialize()
def disable_root(self):
- """Disable the root user global access
+ """Reset the root password to an unknown value.
"""
- with self.local_sql_client(self.mysql_app.get_engine()) as client:
- client.execute(text(sql_query.REMOVE_ROOT))
+ self.enable_root(root_password=None)
diff --git a/trove/tests/unittests/guestagent/test_dbaas.py b/trove/tests/unittests/guestagent/test_dbaas.py
index a24a0388..548fde12 100644
--- a/trove/tests/unittests/guestagent/test_dbaas.py
+++ b/trove/tests/unittests/guestagent/test_dbaas.py
@@ -42,7 +42,6 @@ from trove.conductor import api as conductor_api
from trove.guestagent.common.configuration import ConfigurationManager
from trove.guestagent.common.configuration import ImportOverrideStrategy
from trove.guestagent.common import operating_system
-from trove.guestagent.common import sql_query
from trove.guestagent.datastore.experimental.cassandra import (
service as cass_service)
from trove.guestagent.datastore.experimental.couchbase import (
@@ -1669,14 +1668,12 @@ class MySqlRootStatusTest(trove_testtools.TestCase):
mock_execute.assert_any_call(TextClauseMatcher(
'UPDATE mysql.user'))
- def test_root_disable(self):
- with patch.object(self.mock_client,
- 'execute', return_value=None) as mock_execute:
- # invocation
- MySqlRootAccess().disable_root()
- # verification
- mock_execute.assert_any_call(TextClauseMatcher(
- sql_query.REMOVE_ROOT))
+ @patch.object(MySqlRootAccess, 'enable_root')
+ def test_root_disable(self, enable_root_mock):
+ # invocation
+ MySqlRootAccess().disable_root()
+ # verification
+ enable_root_mock.assert_called_once_with(root_password=None)
class MockStats: