Merge "Adding possibility to generate tempest.conf, not running tempest"
This commit is contained in:
commit
52f62e31dc
@ -52,6 +52,7 @@ _rally()
|
|||||||
OPTS["task_validate"]="--deployment --task --task-args --task-args-file"
|
OPTS["task_validate"]="--deployment --task --task-args --task-args-file"
|
||||||
OPTS["verify_compare"]="--uuid-1 --uuid-2 --csv --html --json --output-file --threshold"
|
OPTS["verify_compare"]="--uuid-1 --uuid-2 --csv --html --json --output-file --threshold"
|
||||||
OPTS["verify_detailed"]="--uuid --sort-by"
|
OPTS["verify_detailed"]="--uuid --sort-by"
|
||||||
|
OPTS["verify_genconfig"]="--deployment --tempest-config --override"
|
||||||
OPTS["verify_list"]=""
|
OPTS["verify_list"]=""
|
||||||
OPTS["verify_results"]="--uuid --html --json --output-file"
|
OPTS["verify_results"]="--uuid --html --json --output-file"
|
||||||
OPTS["verify_show"]="--uuid --sort-by --detailed"
|
OPTS["verify_show"]="--uuid --sort-by --detailed"
|
||||||
|
41
rally/api.py
41
rally/api.py
@ -267,6 +267,27 @@ class Verification(object):
|
|||||||
deployment_uuid = objects.Deployment.get(deployment)["uuid"]
|
deployment_uuid = objects.Deployment.get(deployment)["uuid"]
|
||||||
|
|
||||||
verification = objects.Verification(deployment_uuid=deployment_uuid)
|
verification = objects.Verification(deployment_uuid=deployment_uuid)
|
||||||
|
verifier = cls._create_verifier(deployment_uuid, verification,
|
||||||
|
tempest_config, system_wide_install)
|
||||||
|
LOG.info("Starting verification of deployment: %s" % deployment_uuid)
|
||||||
|
|
||||||
|
verification.set_running()
|
||||||
|
verifier.verify(set_name=set_name, regex=regex)
|
||||||
|
|
||||||
|
return verification
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _create_verifier(deployment_uuid, verification=None,
|
||||||
|
tempest_config=None, system_wide_install=False):
|
||||||
|
"""Create a Tempest object.
|
||||||
|
|
||||||
|
:param deployment_uuid: UUID or name of a deployment
|
||||||
|
:param verification: Verification object
|
||||||
|
:param tempest_config: User specified Tempest config file
|
||||||
|
:param system_wide_install: Use virtualenv else run tests in local
|
||||||
|
environment
|
||||||
|
:return: Tempest object
|
||||||
|
"""
|
||||||
verifier = tempest.Tempest(deployment_uuid, verification=verification,
|
verifier = tempest.Tempest(deployment_uuid, verification=verification,
|
||||||
tempest_config=tempest_config,
|
tempest_config=tempest_config,
|
||||||
system_wide_install=system_wide_install)
|
system_wide_install=system_wide_install)
|
||||||
@ -274,12 +295,8 @@ class Verification(object):
|
|||||||
print("Tempest is not installed for specified deployment.")
|
print("Tempest is not installed for specified deployment.")
|
||||||
print("Installing Tempest for deployment %s" % deployment_uuid)
|
print("Installing Tempest for deployment %s" % deployment_uuid)
|
||||||
verifier.install()
|
verifier.install()
|
||||||
LOG.info("Starting verification of deployment: %s" % deployment_uuid)
|
|
||||||
|
|
||||||
verification.set_running()
|
return verifier
|
||||||
verifier.verify(set_name=set_name, regex=regex)
|
|
||||||
|
|
||||||
return verification
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def install_tempest(cls, deployment, source=None):
|
def install_tempest(cls, deployment, source=None):
|
||||||
@ -326,3 +343,17 @@ class Verification(object):
|
|||||||
verifier.install()
|
verifier.install()
|
||||||
if not tempest_config:
|
if not tempest_config:
|
||||||
shutil.move(tmp_conf_path, verifier.config_file)
|
shutil.move(tmp_conf_path, verifier.config_file)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def configure_tempest(cls, deployment, tempest_config=None,
|
||||||
|
override=False):
|
||||||
|
"""Generate configuration file of Tempest.
|
||||||
|
|
||||||
|
:param deployment: UUID or name of a deployment
|
||||||
|
:param tempest_config: User specified Tempest config file location
|
||||||
|
:param override: Whether or not override existing Tempest config file
|
||||||
|
"""
|
||||||
|
deployment_uuid = objects.Deployment.get(deployment)["uuid"]
|
||||||
|
verifier = cls._create_verifier(deployment_uuid,
|
||||||
|
tempest_config=tempest_config)
|
||||||
|
verifier.generate_config_file(override)
|
||||||
|
@ -281,3 +281,22 @@ class VerifyCommands(object):
|
|||||||
print("Verification UUID: %s" % verification)
|
print("Verification UUID: %s" % verification)
|
||||||
db.verification_get(verification)
|
db.verification_get(verification)
|
||||||
fileutils.update_globals_file("RALLY_VERIFICATION", verification)
|
fileutils.update_globals_file("RALLY_VERIFICATION", verification)
|
||||||
|
|
||||||
|
@cliutils.args("--deployment", dest="deployment", type=str,
|
||||||
|
required=False, help="UUID or name of a deployment")
|
||||||
|
@cliutils.args("--tempest-config", dest="tempest_config", type=str,
|
||||||
|
required=False,
|
||||||
|
help="User specified Tempest config file location")
|
||||||
|
@cliutils.args("--override", dest="override",
|
||||||
|
help="Override existing Tempest config file",
|
||||||
|
required=False, action="store_true")
|
||||||
|
@envutils.with_default_deployment(cli_arg_name="deployment")
|
||||||
|
def genconfig(self, deployment=None, tempest_config=None, override=False):
|
||||||
|
"""Generate configuration file of Tempest.
|
||||||
|
|
||||||
|
:param deployment: UUID or name of a deployment
|
||||||
|
:param tempest_config: User specified Tempest config file location
|
||||||
|
:param override: Whether or not override existing Tempest config file
|
||||||
|
"""
|
||||||
|
api.Verification.configure_tempest(deployment, tempest_config,
|
||||||
|
override)
|
||||||
|
@ -218,11 +218,12 @@ class Tempest(object):
|
|||||||
def is_configured(self):
|
def is_configured(self):
|
||||||
return os.path.isfile(self.config_file)
|
return os.path.isfile(self.config_file)
|
||||||
|
|
||||||
def generate_config_file(self):
|
def generate_config_file(self, override=False):
|
||||||
"""Generate configuration file of tempest for current deployment."""
|
"""Generate configuration file of tempest for current deployment.
|
||||||
|
|
||||||
LOG.debug("Tempest config file: %s " % self.config_file)
|
:param override: Whether or not override existing Tempest config file
|
||||||
if not self.is_configured():
|
"""
|
||||||
|
if not self.is_configured() or override:
|
||||||
msg = _("Creation of configuration file for tempest.")
|
msg = _("Creation of configuration file for tempest.")
|
||||||
LOG.info(_("Starting: ") + msg)
|
LOG.info(_("Starting: ") + msg)
|
||||||
|
|
||||||
@ -231,6 +232,8 @@ class Tempest(object):
|
|||||||
else:
|
else:
|
||||||
LOG.info("Tempest is already configured.")
|
LOG.info("Tempest is already configured.")
|
||||||
|
|
||||||
|
LOG.info("Tempest config file: %s " % self.config_file)
|
||||||
|
|
||||||
def _initialize_testr(self):
|
def _initialize_testr(self):
|
||||||
if not os.path.isdir(self.path(".testrepository")):
|
if not os.path.isdir(self.path(".testrepository")):
|
||||||
print(_("Test Repository initialization."))
|
print(_("Test Repository initialization."))
|
||||||
|
@ -318,3 +318,37 @@ class VerifyCommandsTestCase(test.TestCase):
|
|||||||
uuid=verification_id)
|
uuid=verification_id)
|
||||||
self.assertRaises(exceptions.NotFoundException, self.verify.use,
|
self.assertRaises(exceptions.NotFoundException, self.verify.use,
|
||||||
verification_id)
|
verification_id)
|
||||||
|
|
||||||
|
@mock.patch("rally.api.Verification.configure_tempest")
|
||||||
|
def test_genconfig(self, mock_verification_configure_tempest):
|
||||||
|
deployment_id = "14377d10-ca77-4104-aba8-36edebcfc120"
|
||||||
|
self.verify.genconfig(deployment_id)
|
||||||
|
mock_verification_configure_tempest.assert_called_once_with(
|
||||||
|
deployment_id, None, False)
|
||||||
|
|
||||||
|
@mock.patch("rally.api.Verification.configure_tempest")
|
||||||
|
def test_genconfig_with_config_specified(
|
||||||
|
self, mock_verification_configure_tempest):
|
||||||
|
deployment_id = "68b501af-a553-431c-83ac-30f93a112231"
|
||||||
|
tempest_conf = "/tmp/tempest.conf"
|
||||||
|
self.verify.genconfig(deployment_id, tempest_config=tempest_conf)
|
||||||
|
mock_verification_configure_tempest.assert_called_once_with(
|
||||||
|
deployment_id, tempest_conf, False)
|
||||||
|
|
||||||
|
@mock.patch("rally.api.Verification.configure_tempest")
|
||||||
|
def test_genconfig_override_config(
|
||||||
|
self, mock_verification_configure_tempest):
|
||||||
|
deployment_id = "cd5b64ad-c12f-4781-a89e-95535b145a11"
|
||||||
|
self.verify.genconfig(deployment_id, override=True)
|
||||||
|
mock_verification_configure_tempest.assert_called_once_with(
|
||||||
|
deployment_id, None, True)
|
||||||
|
|
||||||
|
@mock.patch("rally.api.Verification.configure_tempest")
|
||||||
|
def test_genconfig_with_config_specified_and_override_config(
|
||||||
|
self, mock_verification_configure_tempest):
|
||||||
|
deployment_id = "89982aba-efef-48cb-8d94-ca893b4e78a6"
|
||||||
|
tempest_conf = "/tmp/tempest.conf"
|
||||||
|
self.verify.genconfig(deployment_id,
|
||||||
|
tempest_config=tempest_conf, override=True)
|
||||||
|
mock_verification_configure_tempest.assert_called_once_with(
|
||||||
|
deployment_id, tempest_conf, True)
|
||||||
|
@ -340,3 +340,10 @@ class VerificationAPITestCase(BaseDeploymentTestCase):
|
|||||||
mock_copy2.assert_called_once_with(fake_conf, tmp_file)
|
mock_copy2.assert_called_once_with(fake_conf, tmp_file)
|
||||||
self.tempest.install.assert_called_once_with()
|
self.tempest.install.assert_called_once_with()
|
||||||
mock_move.assert_called_once_with(tmp_file, fake_conf)
|
mock_move.assert_called_once_with(tmp_file, fake_conf)
|
||||||
|
|
||||||
|
@mock.patch("rally.common.objects.Deployment.get")
|
||||||
|
@mock.patch("rally.verification.tempest.tempest.Tempest")
|
||||||
|
def test_configure_tempest(self, mock_tempest, mock_deployment_get):
|
||||||
|
mock_tempest.return_value = self.tempest
|
||||||
|
api.Verification.configure_tempest(self.deployment_uuid)
|
||||||
|
self.tempest.generate_config_file.assert_called_once_with(False)
|
||||||
|
Loading…
Reference in New Issue
Block a user