Replace 'lsb_release -is' with the method 'get_os_distrib'

It helps identify the distribution using method 'get_is_distrib'
closes-bug: #1609505

Change-Id: I59f1f521cd82cb8f5ed65c1a82744deb3268ac2d
This commit is contained in:
Alina Nesterova 2016-08-09 18:34:44 +03:00 committed by Alina
parent 4427f7698c
commit 047ab5ae99
10 changed files with 30 additions and 19 deletions

View File

@ -10,4 +10,4 @@ source = sahara
[report] [report]
ignore_errors = True ignore_errors = True
precision = 3 precision = 3

View File

@ -22,7 +22,7 @@ def _root(remote, cmd, **kwargs):
def _get_os_distrib(remote): def _get_os_distrib(remote):
return remote.execute_command('lsb_release -is')[1].strip().lower() return remote.get_os_distrib()
def is_centos_os(remote): def is_centos_os(remote):

View File

@ -75,7 +75,7 @@ def get_all():
def get(instance): def get(instance):
with instance.remote() as r: with instance.remote() as r:
name = r.execute_command('lsb_release -is', run_as_root=True)[1] name = r.get_os_distrib()
for d in get_all(): for d in get_all():
if d.name in name: if d.name in name:
return d return d

View File

@ -38,16 +38,12 @@ ntp_opts = [
CONF.register_opts(ntp_opts) CONF.register_opts(ntp_opts)
def _get_os_distrib(remote):
return remote.execute_command('lsb_release -is')[1].strip().lower()
def _sudo(remote, cmd): def _sudo(remote, cmd):
remote.execute_command(cmd, run_as_root=True) remote.execute_command(cmd, run_as_root=True)
def _restart_ntp(remote): def _restart_ntp(remote):
distrib = _get_os_distrib(remote) distrib = remote.get_os_distrib()
cmd = "service %s restart" cmd = "service %s restart"
if distrib == 'ubuntu': if distrib == 'ubuntu':
cmd = cmd % "ntp" cmd = cmd % "ntp"
@ -58,7 +54,7 @@ def _restart_ntp(remote):
def _verify_installation(remote): def _verify_installation(remote):
distrib = _get_os_distrib(remote) distrib = remote.get_os_distrib()
if distrib == 'ubuntu': if distrib == 'ubuntu':
return remote.execute_command("dpkg -s ntp") return remote.execute_command("dpkg -s ntp")
else: else:

View File

@ -231,8 +231,7 @@ class _NFSMounter(_ShareHandler):
@classmethod @classmethod
def setup_instance(cls, remote): def setup_instance(cls, remote):
"""Prepares an instance to mount this type of share.""" """Prepares an instance to mount this type of share."""
response = remote.execute_command('lsb_release -is') distro = remote.get_os_distrib()
distro = response[1].strip().lower()
if distro in cls._NFS_CHECKS: if distro in cls._NFS_CHECKS:
command = cls._NFS_CHECKS[distro] command = cls._NFS_CHECKS[distro]
remote.execute_command(command, run_as_root=True) remote.execute_command(command, run_as_root=True)

View File

@ -59,7 +59,7 @@ def _is_xfs_enabled(cluster):
def _get_os_distrib(remote): def _get_os_distrib(remote):
return remote.execute_command('lsb_release -is')[1].strip().lower() return remote.get_os_distrib()
def _check_installed_xfs(instance): def _check_installed_xfs(instance):

View File

@ -45,6 +45,9 @@ class FakeRemote(object):
def append_to_file(self, file, text, run_as_root=False): def append_to_file(self, file, text, run_as_root=False):
return self.execute_command(file, run_as_root) return self.execute_command(file, run_as_root)
def get_os_distrib(self):
return self.execute_command('get_os_distrib')
class FakeInstance(object): class FakeInstance(object):
def __init__(self, effects, id): def __init__(self, effects, id):

View File

@ -45,7 +45,7 @@ def _mock_node_group(ips, share_list):
# Returns a mocked node group and a list of mocked # Returns a mocked node group and a list of mocked
# execute_command functions for its instances. # execute_command functions for its instances.
execute_mocks = [mock.Mock(return_value=(None, "centos")) for ip in ips] execute_mocks = [mock.Mock(return_value="centos") for ip in ips]
get_id = mock.Mock(return_value=uuid.uuid4()) get_id = mock.Mock(return_value=uuid.uuid4())
instances = [ instances = [
mock.Mock( mock.Mock(
@ -54,7 +54,8 @@ def _mock_node_group(ips, share_list):
return_value=mock.Mock( return_value=mock.Mock(
__enter__=mock.Mock( __enter__=mock.Mock(
return_value=mock.Mock( return_value=mock.Mock(
execute_command=execute_mocks[index])), execute_command=execute_mocks[index],
get_os_distrib=execute_mocks[index])),
__exit__=mock.Mock()))) __exit__=mock.Mock())))
for index, ip in enumerate(ips)] for index, ip in enumerate(ips)]
@ -66,7 +67,6 @@ def _mock_node_group(ips, share_list):
def _setup_calls(): def _setup_calls():
return [ return [
mock.call('lsb_release -is'),
mock.call('rpm -q nfs-utils || yum install -y nfs-utils', mock.call('rpm -q nfs-utils || yum install -y nfs-utils',
run_as_root=True)] run_as_root=True)]

View File

@ -33,11 +33,13 @@ class TestEscapeQuotes(testtools.TestCase):
class TestGetOsDistrib(testtools.TestCase): class TestGetOsDistrib(testtools.TestCase):
@mock.patch('sahara.utils.ssh_remote._execute_command', @mock.patch('sahara.utils.ssh_remote._execute_command',
return_value=[1, 'Ubuntu']) return_value=[1, 'Ubuntu'])
def test_get_os_distrib(self, p_execute_command): @mock.patch('sahara.utils.ssh_remote.__get_python_to_execute',
return_value='python3')
def test_get_os_distrib(self, python, p_execute_command):
d = ssh_remote._get_os_distrib() d = ssh_remote._get_os_distrib()
p_execute_command.assert_called_once_with( p_execute_command.assert_called_once_with(
('printf "import platform\nprint(platform.linux_distribution(' ('printf "import platform\nprint(platform.linux_distribution('
'full_distribution_name=0)[0])" | python'), 'full_distribution_name=0)[0])" | python3'),
run_as_root=False) run_as_root=False)
self.assertEqual('ubuntu', d) self.assertEqual('ubuntu', d)

View File

@ -354,17 +354,28 @@ def _read_file_from(remote_file, run_as_root=False):
'rm %s' % fl, run_as_root=True, raise_when_error=False) 'rm %s' % fl, run_as_root=True, raise_when_error=False)
def __get_python_to_execute():
try:
_execute_command('python3 --version')
except Exception:
_execute_command('python2 --version')
return 'python2'
return 'python3'
def _get_os_distrib(): def _get_os_distrib():
python_version = __get_python_to_execute()
return _execute_command( return _execute_command(
('printf "import platform\nprint(platform.linux_distribution(' ('printf "import platform\nprint(platform.linux_distribution('
'full_distribution_name=0)[0])" | python'), 'full_distribution_name=0)[0])" | {}'.format(python_version)),
run_as_root=False)[1].lower().strip() run_as_root=False)[1].lower().strip()
def _get_os_version(): def _get_os_version():
python_version = __get_python_to_execute()
return _execute_command( return _execute_command(
('printf "import platform\nprint(platform.linux_distribution()[1])"' ('printf "import platform\nprint(platform.linux_distribution()[1])"'
' | python'), run_as_root=False)[1].strip() ' | {}'.format(python_version)), run_as_root=False)[1].strip()
def _install_packages(packages): def _install_packages(packages):