11import os
22import time
33from collections import defaultdict
4- from typing import Dict , List , Optional
4+ from typing import Dict , List , Optional , Tuple
55from urllib .parse import urlparse
66
77from fabric .api import cd , get , put , quiet , run , settings
2525
2626class RemoteLinux (Remote ):
2727
28+ PLATFORM = 'linux'
29+
2830 CB_DIR = '/opt/couchbase'
2931
3032 PROCESSES = ('beam.smp' , 'memcached' , 'epmd' , 'cbq-engine' , 'indexer' ,
@@ -37,28 +39,27 @@ class RemoteLinux(Remote):
3739
3840 LINUX_PERF_DELAY = 30
3941
42+ def __init__ (self , cluster_spec : ClusterSpec ):
43+ super ().__init__ (cluster_spec )
44+ self .distro , self .distro_version = self .detect_distro ()
45+
4046 @property
4147 def package (self ):
42- if self .os .upper () in ('UBUNTU' , 'DEBIAN' ):
48+ if self .distro .upper () in ('UBUNTU' , 'DEBIAN' ):
4349 return 'deb'
4450 else :
4551 return 'rpm'
4652
4753 @master_server
48- def detect_centos_release (self ) -> str :
49- """Detect CentOS release (e.g., 6 or 7).
50-
51- Possible values:
52- - CentOS release 6.x (Final)
53- - CentOS Linux release 7.2.1511 (Core)
54- """
55- return run ('cat /etc/redhat-release' ).split ()[- 2 ][0 ]
56-
57- @master_server
58- def detect_ubuntu_release (self ):
59- return run ('lsb_release -sr' ).strip ()
60-
61- def run_cbindex_command (self , options , worker_home = '/tmp/perfrunner' ):
54+ def detect_distro (self ) -> Tuple [str , str ]:
55+ logger .info ('Detecting Linux distribution on master node' )
56+ cmd = 'grep ^{}= /etc/os-release | cut -d= -f2 | tr -d \' "\' '
57+ distro_id = run (cmd .format ('ID' ))
58+ distro_version = run (cmd .format ('VERSION_ID' ))
59+ logger .info ('Detected Linux distribution: {} {}' .format (distro_id , distro_version ))
60+ return distro_id , distro_version
61+
62+ def run_cbindex_command (self , options , worker_home = '/tmp/perfrunner' ):
6263 cmd = "/opt/couchbase/bin/cbindex {options}" .format (options = options )
6364 logger .info ('Running: {}' .format (cmd ))
6465 run (cmd , shell_escape = False , pty = False )
@@ -341,7 +342,7 @@ def install_couchbase(self, url: str):
341342 logger .info ('Installing Couchbase Server' )
342343 if self .package == 'deb' :
343344 run ('yes | apt-get install gdebi' )
344- run ('yes | apt install -y . /tmp/{}' .format (filename ))
345+ run ('yes | apt install -y /tmp/{}' .format (filename ))
345346 else :
346347 run ('yes | yum localinstall -y /tmp/{}' .format (filename ))
347348
@@ -1030,9 +1031,14 @@ def cbbackupmgr_restore(self, master_node: str, cluster_spec: ClusterSpec, threa
10301031 run (cmd )
10311032
10321033 @all_servers
1033- def install_cb_debug_rpm (self , url ):
1034- logger .info ('Installing Couchbase Debug rpm on all servers' )
1035- run ('rpm -iv {}' .format (url ), quiet = True )
1034+ def install_cb_debug_package (self , url ):
1035+ logger .info ('Installing Couchbase Debug package on all servers' )
1036+ if url .endswith ('deb' ):
1037+ cmd = 'dpkg -i {}' .format (url )
1038+ else :
1039+ cmd = 'rpm -iv {}' .format (url )
1040+
1041+ run (cmd , quiet = True )
10361042
10371043 @all_servers
10381044 def generate_linux_perf_script (self ):
0 commit comments