clean cobbler and chef when refresh

Change-Id: I15d24c3e8b08956710de4c86083def4dd55cf0cf
This commit is contained in:
xiaodongwang 2014-09-08 11:15:32 -07:00
parent d6ea19ad98
commit 37a334a7b7
8 changed files with 92 additions and 4 deletions

6
bin/chef/clean_clients.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
echo "clean chef clients"
yes | knife client bulk delete '^(?!chef-).*'
if [[ "$?" != "0" ]]; then
echo "failed to clean all clients"
fi

13
bin/chef/clean_environments.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
echo "clean chef environments"
environments=$(knife environment list)
for environment in $environments; do
if [[ "$environment" != "_default" ]]; then
yes | knife environment delete $environment
if [[ "$?" != "0" ]]; then
echo "failed to delete environment $environment"
else
echo "environment $environment is deleted"
fi
fi
done

6
bin/chef/clean_nodes.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
echo "clean chef nodes"
yes | knife node bulk delete '.*'
if [[ "$?" != "0" ]]; then
echo "failed to clean all nodes"
fi

50
bin/clean_installation_logs.py Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env python
#
# Copyright 2014 Huawei Technologies Co. Ltd
#
# 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.
"""clean all installation logs."""
import logging
import os
import os.path
import site
import sys
activate_this = '$PythonHome/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
site.addsitedir('$PythonHome/lib/python2.6/site-packages')
sys.path.append('$PythonHome')
os.environ['PYTHON_EGG_CACHE'] = '/tmp/.egg'
from compass.utils import flags
from compass.utils import logsetting
from compass.utils import setting_wrapper as setting
def clean_installation_logs():
installation_log_dirs = setting.INSTALLATION_LOGDIR
successful = True
for _, logdir in installation_log_dirs.items():
cmd = 'rm -rf %s/*' % logdir
status = os.system(cmd)
logging.info('run cmd %s resturns %s', cmd, status)
if status:
successful = False
return successful
if __name__ == "__main__":
flags.init()
logsetting.init()
clean_installation_logs()

9
bin/cobbler/remove_systems.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
systems=$(cobbler system list)
echo "remove systems: $systems"
for system in $systems; do
cobbler system remove --name=$system
if [[ "$?" != "0" ]]; then
echo "failed to remove system %s"
fi
done

View File

@ -2,9 +2,15 @@
set -e
service mysqld restart
/opt/compass/bin/manage_db.py createdb
echo "You may run '/opt/compass/bin/clean_nodes.sh' to clean nodes on chef server"
echo "You may run '/opt/compass/bin/clean_clients.sh' to clean clients on chef server"
echo "you may run '/opt/compass/bin/clean_environments.sh' to clean environments on chef server"
echo "you may run '/opt/compass/bin/remove_systems.sh' to clean systems on cobbler"
/opt/compass/bin/clean_installation_logs.py
service httpd restart
service rsyslog restart
service redis restart
sleep 10
redis-cli flushall
service compass-celeryd restart
service compass-progress-updated restart

View File

@ -66,7 +66,6 @@ def session():
.. note::
To operate database, it should be called in database session.
"""
import traceback
if hasattr(SESSION_HOLDER, 'session'):
logging.error('we are already in session')
raise exception.DatabaseException('session already exist')

View File

@ -16,6 +16,7 @@ sudo cp -rf $COMPASSDIR/bin/*.sh /opt/compass/bin/
sudo cp -rf $COMPASSDIR/bin/compassd /usr/bin/
sudo cp -rf $COMPASSDIR/bin/compass /usr/bin/
sudo cp -rf $COMPASSDIR/bin/chef/* /opt/compass/bin/
sudo cp -rf $COMPASSDIR/bin/cobbler/* /opt/compass/bin/
sudo cp -rf $WEB_HOME/public/* /var/www/compass_web/
sudo cp -rf $WEB_HOME/v2 /var/www/compass_web/
sudo cp -rf $COMPASSDIR/templates /etc/compass/
@ -49,15 +50,13 @@ sudo sed -i "s/\$cobbler_ip/$ipaddr/g" /etc/compass/os_installer/cobbler.conf
sudo sed -i "/CHEF_INSTALLER_URL/c\CHEF_INSTALLER_URL = 'https:\/\/$ipaddr/'" /etc/compass/setting
sudo sed -i "s/\$chef_ip/$ipaddr/g" /etc/compass/package_installer/chef-icehouse.conf
sudo sed -i "s/\$chef_hostname/$HOSTNAME/g" /etc/compass/package_installer/chef-icehouse.conf
sudo sed -i "s/\$compass_ip/$ipaddr/g" /etc/compass/global_config
sudo sed -i "s/\$compass_hostname/$HOSTNAME/g" /etc/compass/global_config
sudo sed -i "s/\$compass_testmode/$TESTMODE/g" /etc/compass/global_config
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /var/www/compass/compass.wsgi
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /usr/bin/compass
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /opt/compass/bin/poll_switch.py
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /opt/compass/bin/progress_update.py
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /opt/compass/bin/manage_db.py
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /opt/compass/bin/client.py
sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /opt/compass/bin/clean_installation_logs.py
sudo sed -e 's|$Python|'$VIRTUAL_ENV/bin/python'|' -i /etc/init.d/compass-progress-updated
sudo sed -e 's|$CeleryPath|'$VIRTUAL_ENV/bin/celery'|' -i /etc/init.d/compass-celeryd
sudo sed -i "s/\$ipaddr/$ipaddr/g" /etc/compass/os_metadata/general.conf