move backend deployment integration test to actions, make test logging to tmp file. make update an extra databag item from config.

Change-Id: I4ba825d9046b9b8563215fed5a73097077460889
This commit is contained in:
xiaodongwang 2014-02-10 23:31:36 -08:00
parent 149107c53c
commit f9798e01df
9 changed files with 77 additions and 16 deletions

View File

@ -54,7 +54,10 @@ TO_CLUSTER_TRANSLATORS = {
translated_keys=['/networking/public/interface']
)],
'/networking/interfaces/tenant/nic': [KeyTranslator(
translated_keys=['/networking/tenant/interface']
translated_keys=[
'/networking/tenant/interface',
'/networking/plugins/ovs/gre/local_ip_interface'
]
)],
}
),

View File

@ -239,6 +239,7 @@ class TestEndToEnd(unittest2.TestCase):
session.add(host)
def setUp(self):
super(TestEndToEnd, self).setUp()
database.create_db()
shutil.rmtree = Mock()
os.system = Mock()
@ -250,9 +251,17 @@ class TestEndToEnd(unittest2.TestCase):
self.os_installer_checker_['cobbler'] = self._check_cobbler
self.package_installer_checker_ = {}
self.package_installer_checker_['chef'] = self._check_chef
self.backup_logfile = flags.OPTIONS.logfile
if not flags.OPTIONS.logfile:
flags.OPTIONS.logfile = '/tmp/test_trigger_install.log'
logsetting.init()
def tearDown(self):
flags.OPTIONS.logfile = self.backup_logfile
logsetting.init()
database.drop_db()
super(TestEndToEnd, self).tearDown()
def test_1(self):
self._test('test1')

View File

@ -49,8 +49,15 @@ class ApiTestCase(unittest2.TestCase):
# We do not want to send a real task as our test environment
# does not have a AMQP system set up. TODO(): any better way?
current_app.send_task = Mock()
self.backup_logfile = flags.OPTIONS.logfile
if not flags.OPTIONS.logfile:
flags.OPTIONS.logfile = '/tmp/test_api.log'
logsetting.init()
def tearDown(self):
flags.OPTIONS.logfile = self.backup_logfile
logsetting.init()
database.drop_db()
super(ApiTestCase, self).tearDown()

View File

@ -7,17 +7,46 @@ import sys
from optparse import OptionParser
PARSER = OptionParser()
OPTIONS = None
class Flags(object):
PARSER = OptionParser()
PARSED_OPTIONS = None
def parse_args(self):
(options, argv) = Flags.PARSER.parse_args()
sys.argv = [sys.argv[0]] + argv
Flags.PARSED_OPTIONS = options
def __getattr__(self, name):
if Flags.PARSED_OPTIONS and hasattr(Flags.PARSED_OPTIONS, name):
return getattr(Flags.PARSED_OPTIONS, name)
for option in Flags.PARSER.option_list:
if option.dest == name:
return option.default
raise AttributeError('Option instance has no attribute %s' % name)
def __setattr__(self, name, value):
if Flags.PARSED_OPTIONS and hasattr(Flags.PARSED_OPTIONS, name):
setattr(Flags.PARSED_OPTIONS, name, value)
return
for option in Flags.PARSER.option_list:
if option.dest == name:
option.default = value
return
object.__setattr__(self, name, value)
OPTIONS = Flags()
def init():
"""Init flag parsing.
"""
global OPTIONS
(options, argv) = PARSER.parse_args()
sys.argv = [sys.argv[0]] + argv
OPTIONS = options
OPTIONS.parse_args()
def add(flagname, **kwargs):
@ -26,7 +55,8 @@ def add(flagname, **kwargs):
:param flagname: flag name declared in cmd as --<flagname>=...
:type flagname: str
"""
PARSER.add_option('--%s' % flagname, dest=flagname, **kwargs)
Flags.PARSER.add_option('--%s' % flagname,
dest=flagname, **kwargs)
def add_bool(flagname, default=True, **kwargs):
@ -37,9 +67,9 @@ def add_bool(flagname, default=True, **kwargs):
:param default: default value
:type default: bool
"""
PARSER.add_option('--%s' % flagname,
dest=flagname, default=default,
action="store_true", **kwargs)
PARSER.add_option('--no%s' % flagname,
dest=flagname,
action="store_false", **kwargs)
Flags.PARSER.add_option('--%s' % flagname,
dest=flagname, default=default,
action="store_true", **kwargs)
Flags.PARSER.add_option('--no%s' % flagname,
dest=flagname,
action="store_false", **kwargs)

View File

@ -43,10 +43,22 @@ fi
sudo sed -i "/COBBLER_INSTALLER_URL/c\COBBLER_INSTALLER_URL = 'http:\/\/$ipaddr/cobbler_api'" /etc/compass/setting
sudo sed -i "/CHEF_INSTALLER_URL/c\CHEF_INSTALLER_URL = 'https:\/\/$ipaddr/'" /etc/compass/setting
# add cookbooks, databags and roles
sudo /opt/compass/bin/addcookbooks.py --cookbooks_dir=$ADAPTER_HOME/chef/cookbooks
sudo /opt/compass/bin/adddatabags.py --databags_dir=$ADAPTER_HOME/chef/databags
sudo /opt/compass/bin/addroles.py --roles_dir=$ADAPTER_HOME/chef/roles
sudo mkdir -p /var/chef/cookbooks/
sudo mkdir -p /var/chef/databags/
sudo mkdir -p /var/chef/roles/
sudo cp -r $ADAPTER_HOME/chef/cookbooks/* /var/chef/cookbooks/
sudo cp -r $ADAPTER_HOME/chef/databags/* /var/chef/databags/
sudo cp -r $ADAPTER_HOME/chef/roles/* /var/chef/roles/
sudo chmod +x /opt/compass/bin/addcookbooks.py
sudo chmod +x /opt/compass/bin/adddatabags.py
sudo chmod +x /opt/compass/bin/addroles.py
sudo /opt/compass/bin/addcookbooks.py --cookbooks_dir=/var/chef/cookbooks
sudo /opt/compass/bin/adddatabags.py --databags_dir=/var/chef/databags
sudo /opt/compass/bin/addroles.py --roles_dir=/var/chef/roles
# copy the chef validatation keys to cobbler snippets
sudo cp -rf /etc/chef-server/chef-validator.pem /var/lib/cobbler/snippets/chef-validator.pem