summaryrefslogtreecommitdiffstats
path: root/apex
diff options
context:
space:
mode:
Diffstat (limited to 'apex')
-rw-r--r--apex/common/utils.py43
-rw-r--r--apex/overcloud/config.py3
-rw-r--r--apex/overcloud/overcloud_deploy.py6
-rw-r--r--apex/tests/playbooks/test_failed_playbook.yaml5
-rw-r--r--apex/tests/test_apex_common_utils.py8
5 files changed, 51 insertions, 14 deletions
diff --git a/apex/common/utils.py b/apex/common/utils.py
index e21ab835..b1837b9b 100644
--- a/apex/common/utils.py
+++ b/apex/common/utils.py
@@ -95,13 +95,36 @@ def run_ansible(ansible_vars, playbook, host='localhost', user='root',
with open(ansible_tmp, 'w') as fh:
fh.write("ANSIBLE_HOST_KEY_CHECKING=FALSE {}".format(
' '.join(ansible_command)))
- try:
- my_env = os.environ.copy()
- my_env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
- logging.info("Executing playbook...this may take some time")
- logging.info(subprocess.check_output(ansible_command, env=my_env,
- stderr=subprocess.STDOUT).decode('utf-8'))
- except subprocess.CalledProcessError as e:
- logging.error("Error executing ansible: {}".format(
- pprint.pformat(e.output.decode('utf-8'))))
- raise
+
+ my_env = os.environ.copy()
+ my_env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
+ logging.info("Executing playbook...this may take some time")
+ p = subprocess.Popen(ansible_command,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ bufsize=1,
+ env=my_env,
+ universal_newlines=True)
+ # read first line
+ x = p.stdout.readline()
+ # initialize task
+ task = ''
+ while x:
+ # append lines to task
+ task += x
+ # log the line and read another
+ x = p.stdout.readline()
+ # deliver the task to info when we get a blank line
+ if not x.strip():
+ task += x
+ logging.info(task.replace('\\n', '\n'))
+ task = ''
+ x = p.stdout.readline()
+ # clean up and get return code
+ p.stdout.close()
+ rc = p.wait()
+ if rc:
+ # raise errors
+ e = "Ansible playbook failed. See Ansible logs for details."
+ logging.error(e)
+ raise Exception(e)
diff --git a/apex/overcloud/config.py b/apex/overcloud/config.py
index acec5323..e48b254f 100644
--- a/apex/overcloud/config.py
+++ b/apex/overcloud/config.py
@@ -62,6 +62,9 @@ def create_nic_template(network_settings, deploy_settings, role, template_dir,
nets['tenant']['nic_mapping'][role]['interface-options'] =\
ds['performance'][role.title()]['vpp']['interface-options']
+ if role == 'controller' and ds.get('sfc', None):
+ ext_net = 'interface'
+
template_output = template.render(
nets=nets,
role=role,
diff --git a/apex/overcloud/overcloud_deploy.py b/apex/overcloud/overcloud_deploy.py
index 60652146..d37d73ca 100644
--- a/apex/overcloud/overcloud_deploy.py
+++ b/apex/overcloud/overcloud_deploy.py
@@ -30,7 +30,7 @@ from cryptography.hazmat.backends import default_backend as \
SDN_FILE_MAP = {
'opendaylight': {
- 'sfc': 'opendaylight_sfc.yaml',
+ 'sfc': 'neutron-sfc-opendaylight.yaml',
'vpn': 'neutron-bgpvpn-opendaylight.yaml',
'gluon': 'gluon.yaml',
'vpp': {
@@ -220,7 +220,7 @@ def prep_image(ds, img, tmp_dir, root_pw=None):
{con.VIRT_RUN_CMD: "yum -y install "
"/root/ovs/rpm/rpmbuild/RPMS/x86_64/"
"{}".format(OVS_NSH_KMOD_RPM)},
- {con.VIRT_RUN_CMD: "yum upgrade -y "
+ {con.VIRT_RUN_CMD: "yum downgrade -y "
"/root/ovs/rpm/rpmbuild/RPMS/x86_64/"
"{}".format(OVS_NSH_RPM)}
])
@@ -236,7 +236,7 @@ def prep_image(ds, img, tmp_dir, root_pw=None):
virt_cmds.extend([
{con.VIRT_RUN_CMD: "yum -y remove opendaylight"},
{con.VIRT_RUN_CMD: "yum -y install /root/{}/*".format(
- con.DEFAULT_ODL_VERSION)},
+ ds_opts['odl_version'])},
{con.VIRT_RUN_CMD: "rm -rf /etc/puppet/modules/opendaylight"},
{con.VIRT_RUN_CMD: "cd /etc/puppet/modules && tar xzf "
"/root/puppet-opendaylight-"
diff --git a/apex/tests/playbooks/test_failed_playbook.yaml b/apex/tests/playbooks/test_failed_playbook.yaml
new file mode 100644
index 00000000..d12cefb1
--- /dev/null
+++ b/apex/tests/playbooks/test_failed_playbook.yaml
@@ -0,0 +1,5 @@
+---
+- hosts: localhost
+ tasks:
+ - fail:
+ msg: "Failure to test with"
diff --git a/apex/tests/test_apex_common_utils.py b/apex/tests/test_apex_common_utils.py
index 12aeaf2c..aee39a75 100644
--- a/apex/tests/test_apex_common_utils.py
+++ b/apex/tests/test_apex_common_utils.py
@@ -19,7 +19,8 @@ from apex.tests.constants import (
from nose.tools import (
assert_equal,
assert_is_instance,
- assert_not_is_instance)
+ assert_not_is_instance,
+ assert_raises)
NET_SETS = os.path.join(TEST_CONFIG_DIR, 'network', 'network_settings.yaml')
@@ -60,3 +61,8 @@ class TestCommonUtils:
playbook = 'apex/tests/playbooks/test_playbook.yaml'
assert_equal(utils.run_ansible(None, os.path.join(playbook),
dry_run=True), None)
+
+ def test_failed_run_ansible(self):
+ playbook = 'apex/tests/playbooks/test_failed_playbook.yaml'
+ assert_raises(Exception, utils.run_ansible, None,
+ os.path.join(playbook), dry_run=True)