Initial commit with fixtures
- add fixtures for hardware and underlay
- add fuel-devops template tcpcloud-default.yaml
* Migration of fixtures is not finished yet
diff --git a/tcp_tests/managers/rallymanager.py b/tcp_tests/managers/rallymanager.py
new file mode 100644
index 0000000..bd937d5
--- /dev/null
+++ b/tcp_tests/managers/rallymanager.py
@@ -0,0 +1,118 @@
+# Copyright 2016 Mirantis, Inc.
+#
+# 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.
+
+from tcp_tests import logger
+from tcp_tests import settings
+
+
+LOG = logger.logger
+
+
+class RallyManager(object):
+ """docstring for RallyManager"""
+
+ image_name = 'rallyforge/rally'
+ image_version = '0.5.0'
+
+ def __init__(self, underlay, admin_node_name):
+ super(RallyManager, self).__init__()
+ self._admin_node_name = admin_node_name
+ self._underlay = underlay
+
+ def prepare(self):
+ content = """
+sed -i 's|#swift_operator_role = Member|swift_operator_role=SwiftOperator|g' /etc/rally/rally.conf # noqa
+source /home/rally/openrc
+rally-manage db recreate
+rally deployment create --fromenv --name=tempest
+rally verify install
+rally verify genconfig
+rally verify showconfig"""
+ cmd = "cat > {path} << EOF\n{content}\nEOF".format(
+ path='/home/{user}/rally/install_tempest.sh'.format(
+ user=settings.SSH_LOGIN), content=content)
+ cmd1 = "chmod +x /home/{user}/rally/install_tempest.sh".format(
+ user=settings.SSH_LOGIN)
+ cmd2 = "cp /home/{user}/openrc-* /home/{user}/rally/openrc".format(
+ user=settings.SSH_LOGIN)
+
+ with self._underlay.remote(node_name=self._admin_node_name) as remote:
+ LOG.info("Create rally workdir")
+ remote.check_call('mkdir -p /home/{user}/rally'.format(
+ user=settings.SSH_LOGIN))
+ LOG.info("Create install_tempest.sh")
+ remote.check_call(cmd)
+ LOG.info("Chmod +x install_tempest.sh")
+ remote.check_call(cmd1)
+ LOG.info("Copy openstackrc")
+ remote.check_call(cmd2)
+
+ def pull_image(self, version=None):
+ version = version or self.image_version
+ image = self.image_name
+ cmd = "docker pull {image}:{version}".format(image=image,
+ version=version)
+ with self._underlay.remote(node_name=self._admin_node_name) as remote:
+ LOG.info("Pull {image}:{version}".format(image=image,
+ version=version))
+ remote.check_call(cmd)
+
+ with self._underlay.remote(node_name=self._admin_node_name) as remote:
+ LOG.info("Getting image id")
+ cmd = "docker images | grep 0.5.0| awk '{print $3}'"
+ res = remote.check_call(cmd)
+ self.image_id = res['stdout'][0].strip()
+ LOG.info("Image ID is {}".format(self.image_id))
+
+ def run(self):
+ with self._underlay.remote(node_name=self._admin_node_name) as remote:
+ cmd = ("docker run --net host -v /home/{user}/rally:/home/rally "
+ "-tid -u root {image_id}".format(
+ user=settings.SSH_LOGIN, image_id=self.image_id))
+ LOG.info("Run Rally container")
+ remote.check_call(cmd)
+
+ cmd = ("docker ps | grep {image_id} | "
+ "awk '{{print $1}}'| head -1").format(
+ image_id=self.image_id)
+ LOG.info("Getting container id")
+ res = remote.check_call(cmd)
+ self.docker_id = res['stdout'][0].strip()
+ LOG.info("Container ID is {}".format(self.docker_id))
+
+ def run_tempest(self, test=''):
+ docker_exec = ('source /home/{user}/rally/openrc; '
+ 'docker exec -i {docker_id} bash -c "{cmd}"')
+ commands = [
+ docker_exec.format(cmd="./install_tempest.sh",
+ user=settings.SSH_LOGIN,
+ docker_id=self.docker_id),
+ docker_exec.format(
+ cmd="source /home/rally/openrc && "
+ "rally verify start {test}".format(test=test),
+ user=settings.SSH_LOGIN,
+ docker_id=self.docker_id),
+ docker_exec.format(
+ cmd="rally verify results --json --output-file result.json",
+ user=settings.SSH_LOGIN,
+ docker_id=self.docker_id),
+ docker_exec.format(
+ cmd="rally verify results --html --output-file result.html",
+ user=settings.SSH_LOGIN,
+ docker_id=self.docker_id),
+ ]
+ with self._underlay.remote(node_name=self._admin_node_name) as remote:
+ LOG.info("Run tempest inside Rally container")
+ for cmd in commands:
+ remote.check_call(cmd, verbose=True)