Skip to content

Commit

Permalink
Merge "The substitution in cassandra-env.sh was too specific and was …
Browse files Browse the repository at this point in the history
…not working sometimes. Fixed to make it generic. python-kafka-python is replaced by python-kafka, related changes during upgrade. Partial-Bug: #1542461"
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Feb 9, 2016
2 parents 7c5b291 + 441c91d commit 2d80037
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 5 deletions.
6 changes: 6 additions & 0 deletions contrail_provisioning/collector/upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ def update_upgrade_data(self):
if (self._args.from_rel >= LooseVersion('2.20')):
self.upgrade_data['restore'].append('/etc/contrail/contrail-analytics-nodemgr.conf')

#python-kafka-python is replaced by python-kafka
if (self._args.from_rel >= LooseVersion('2.20') and
self._args.from_rel < LooseVersion('3.00') and
self._args.to_rel >= LooseVersion('3.00')):
self.upgrade_data['replace'].append(('python-kafka-python', 'python-kafka'))

def update_config(self):
# DEvlop
pass
Expand Down
19 changes: 19 additions & 0 deletions contrail_provisioning/common/upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def __init__(self):
'restore' : [],
'remove_config' : [],
'rename_config' : [],
'replace' : [],
}


Expand Down Expand Up @@ -140,6 +141,23 @@ def _remove_package(self):
else:
local('rpm -e --nodeps %s' % pkgs)

def _replace_package(self):
if not self.upgrade_data['replace']:
return

rem_pkgs = ' '.join([x for (x,y) in self.upgrade_data['replace']])
add_pkgs = ' '.join([y for (x,y) in self.upgrade_data['replace']])
if self.pdist in ['Ubuntu']:
local('DEBIAN_FRONTEND=noninteractive apt-get -y remove --purge\
%s' % rem_pkgs)
local('DEBIAN_FRONTEND=noninteractive apt-get -y install --reinstall\
%s' % add_pkgs)
else:
local('rpm -e --nodeps %s' % rem_pkgs)
cmd = 'yum -y --nogpgcheck --disablerepo=*'
cmd += ' --enablerepo=contrail* install %s' % add_pkgs
local(cmd)

def _ensure_package(self):
if not self.upgrade_data['ensure']:
return
Expand Down Expand Up @@ -182,6 +200,7 @@ def _upgrade(self):
self._upgrade_package()
if self.pdist in ['Ubuntu']:
self._remove_package()
self._replace_package()
self._restore_config()
self._rename_config()
self._remove_config()
Expand Down
6 changes: 3 additions & 3 deletions contrail_provisioning/database/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,10 +173,10 @@ def fixup_cassandra_config_files(self):
local("sudo sed -i 's/# JVM_OPTS=\"\$JVM_OPTS -XX:+PrintGCDetails\"/JVM_OPTS=\"\$JVM_OPTS -XX:+PrintGCDetails\"/g' %s" \
% (env_file))
if (self.pdist == 'centos' and self.pdistversion >= '6.5') or self.pdist == 'redhat':
local("sudo sed -i 's/JVM_OPTS=\"\$JVM_OPTS -Xss180k\"/JVM_OPTS=\"\$JVM_OPTS -Xss228k\"/g' %s" \
local("sudo sed -i 's/JVM_OPTS=\"\$JVM_OPTS -Xss.*\"/JVM_OPTS=\"\$JVM_OPTS -Xss228k\"/g' %s" \
% (env_file))
else:
local("sudo sed -i 's/JVM_OPTS=\"\$JVM_OPTS -Xss180k\"/JVM_OPTS=\"\$JVM_OPTS -Xss512k\"/g' %s" \
local("sudo sed -i 's/JVM_OPTS=\"\$JVM_OPTS -Xss.*\"/JVM_OPTS=\"\$JVM_OPTS -Xss512k\"/g' %s" \
% (env_file))
local("sudo sed -i 's/# JVM_OPTS=\"\$JVM_OPTS -XX:+PrintGCDateStamps\"/JVM_OPTS=\"\$JVM_OPTS -XX:+PrintGCDateStamps\"/g' %s" \
% (env_file))
Expand All @@ -192,7 +192,7 @@ def fixup_cassandra_config_files(self):
% (env_file))
local("sudo sed -i 's/# JVM_OPTS=\"\$JVM_OPTS -Xloggc:\/var\/log\/cassandra\/gc-`date +%%s`.log\"/JVM_OPTS=\"\$JVM_OPTS -Xloggc:\/var\/log\/cassandra\/gc-`date +%%s`.log\"/g' %s" \
% (env_file))
local("sudo sed -i 's/MaxTenuringThreshold=1/MaxTenuringThreshold=30/g' %s" % (env_file))
local("sudo sed -i 's/MaxTenuringThreshold=.*\"/MaxTenuringThreshold=30\"/g' %s" % (env_file))

def fixup_config_files(self):
# Put hostname/ip mapping into /etc/hosts to avoid DNS resolution failing at bootup (Cassandra can fail)
Expand Down
24 changes: 22 additions & 2 deletions contrail_provisioning/database/upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"""Upgrade's Contrail Database components."""

from distutils.version import LooseVersion
from subprocess import Popen, PIPE

from setup import DatabaseSetup
from contrail_provisioning.common.upgrade import ContrailUpgrade
Expand Down Expand Up @@ -37,6 +38,16 @@ def fixup_cassandra_upgrade(self):
self._args.to_rel >= LooseVersion('3.00'))):
return

if self.pdist in ['Ubuntu']:
cassandra_version = local("dpkg -s cassandra | grep Version | awk '{print $2}'", capture=True)
else:
cassandra_version = local("rpm -q --queryformat '%%{RELEASE}' cassandra21", capture=True)

if (cassandra_version.succeeded and
LooseVersion(cassandra_version) >= LooseVersion('2.1')):
print "Cassandra already upgraded to %s" % cassandra_version
return

# run nodetool upgradesstables
print 'Upgrading database sstables...'
local('nodetool upgradesstables')
Expand All @@ -53,8 +64,17 @@ def fixup_cassandra_upgrade(self):
local(cmd)
local('service cassandra stop')
self.fixup_cassandra_config_files()
local('service cassandra start; sleep 5')
while local('netstat -lnp | grep 9160').failed:
local('chown -R cassandra: /var/lib/cassandra/')
local('chown -R cassandra: /var/log/cassandra/')
local('service cassandra start;sleep 5')

cassandra_cli_cmd = "cassandra-cli --host " + self._args.self_ip + \
" --batch < /dev/null | grep 'Connected to:'"
while True:
proc = Popen(cassandra_cli_cmd, shell=True, stdout=PIPE, stderr=PIPE)
(output, errout) = proc.communicate()
if proc.returncode == 0:
break;
local('sleep 5')

# run nodetool upgradesstables again
Expand Down

0 comments on commit 2d80037

Please sign in to comment.