コード例 #1
0
 def _validate_config_semantic_helper(self, admin, user, workload, pos,
                                      deployment):
     try:
         scenario.Scenario.validate(
             workload.name, workload.to_dict(),
             admin=admin, users=[user], deployment=deployment)
     except exceptions.InvalidScenarioArgument as e:
         kw = workload.make_exception_args(pos, six.text_type(e))
         raise exceptions.InvalidTaskConfig(**kw)
コード例 #2
0
    def _validate_config_syntax(self, config):
        for subtask in config.subtasks:
            for pos, workload in enumerate(subtask.workloads):
                try:
                    runner.ScenarioRunner.validate(workload.runner)
                    context.ContextManager.validate(workload.context,
                                                    non_hidden=True)
                    sla.SLA.validate(workload.sla)
                except (exceptions.RallyException,
                        jsonschema.ValidationError) as e:

                    kw = workload.make_exception_args(pos, six.text_type(e))
                    raise exceptions.InvalidTaskConfig(**kw)
コード例 #3
0
 def _validate_config_semantic_helper(self, admin, user_context, workloads,
                                      deployment):
     with user_context as ctx:
         ctx.setup()
         for workload in workloads:
             try:
                 scenario_cls = scenario.Scenario.get(workload.name)
                 scenario_cls.validate(workload.name,
                                       workload.to_dict(),
                                       admin=admin,
                                       users=ctx.context["users"],
                                       deployment=deployment)
             except exceptions.InvalidScenarioArgument as e:
                 kw = workload.make_exception_args(six.text_type(e))
                 raise exceptions.InvalidTaskConfig(**kw)
コード例 #4
0
ファイル: engine.py プロジェクト: vishnu-kumar/rally
 def _validate_config_semantic_helper(self, admin, user, name, pos,
                                      deployment, kwargs):
     try:
         scenario.Scenario.validate(name,
                                    kwargs,
                                    admin=admin,
                                    users=[user],
                                    deployment=deployment)
     except exceptions.InvalidScenarioArgument as e:
         kw = {
             "name": name,
             "pos": pos,
             "config": kwargs,
             "reason": six.text_type(e)
         }
         raise exceptions.InvalidTaskConfig(**kw)
コード例 #5
0
ファイル: test_engine.py プロジェクト: sapcc/rally
    def test_validate__wrong_syntax(self):
        task = mock.MagicMock()
        eng = engine.TaskEngine(mock.MagicMock(), task, mock.Mock())
        e = exceptions.InvalidTaskConfig(name="foo",
                                         pos=0,
                                         config="",
                                         reason="foo")
        eng._validate_config_syntax = mock.MagicMock(side_effect=e)
        eng._validate_config_platforms = mock.Mock()

        actual_e = self.assertRaises(exceptions.InvalidTaskException,
                                     eng.validate)
        self.assertEqual(e, actual_e)

        self.assertTrue(task.set_failed.called)
        # the next validation step should not be processed
        self.assertFalse(eng._validate_config_platforms.called)
コード例 #6
0
ファイル: engine.py プロジェクト: vishnu-kumar/rally
 def _validate_config_syntax(self, config):
     for subtask in config.subtasks:
         for pos, scenario_obj in enumerate(subtask.scenarios):
             try:
                 runner.ScenarioRunner.validate(
                     scenario_obj.get("runner", {}))
                 context.ContextManager.validate(scenario_obj.get(
                     "context", {}),
                                                 non_hidden=True)
                 sla.SLA.validate(scenario_obj.get("sla", {}))
             except (exceptions.RallyException,
                     jsonschema.ValidationError) as e:
                 raise exceptions.InvalidTaskConfig(
                     name=scenario_obj["name"],
                     pos=pos,
                     config=scenario_obj,
                     reason=six.text_type(e))
コード例 #7
0
    def _validate_config_syntax(self, config):
        for subtask in config.subtasks:
            for workload in subtask.workloads:
                scenario_cls = scenario.Scenario.get(workload.name)
                scenario_context = copy.deepcopy(
                    scenario_cls.get_default_context())
                try:
                    runner.ScenarioRunner.validate(workload.runner)
                    context.ContextManager.validate(workload.context)
                    context.ContextManager.validate(scenario_context,
                                                    allow_hidden=True)
                    sla.SLA.validate(workload.sla)
                    for hook_conf in workload.hooks:
                        hook.Hook.validate(hook_conf)
                except (exceptions.RallyException,
                        jsonschema.ValidationError) as e:

                    kw = workload.make_exception_args(six.text_type(e))
                    raise exceptions.InvalidTaskConfig(**kw)
コード例 #8
0
ファイル: test_engine.py プロジェクト: sapcc/rally
    def test_validate__wrong_semantic(self):
        task = mock.MagicMock()
        eng = engine.TaskEngine(mock.MagicMock(), task, mock.Mock())
        e = exceptions.InvalidTaskConfig(name="foo",
                                         pos=0,
                                         config="",
                                         reason="foo")
        eng._validate_config_syntax = mock.MagicMock()
        eng._validate_config_platforms = mock.MagicMock()
        eng._validate_config_semantic = mock.MagicMock(side_effect=e)

        actual_e = self.assertRaises(exceptions.InvalidTaskException,
                                     eng.validate)
        self.assertEqual(e, actual_e)
        self.assertTrue(task.set_failed.called)
        # all steps of validation are called, which means that the last one is
        # failed
        self.assertTrue(eng._validate_config_syntax)
        self.assertTrue(eng._validate_config_platforms)
        self.assertTrue(eng._validate_config_semantic)
コード例 #9
0
ファイル: engine.py プロジェクト: code-R/rally
    def _validate_workload(self, workload, vcontext=None, vtype=None):
        """Validate a workload.

        :param workload: a workload configuration
        :param vcontext: a validation context
        :param vtype: a type of validation (platform, syntax or semantic)
        """
        scenario_cls = scenario.Scenario.get(workload["name"])
        scenario_context = copy.deepcopy(scenario_cls.get_default_context())
        results = []

        results.extend(scenario.Scenario.validate(
            name=workload["name"],
            context=vcontext,
            config=workload,
            plugin_cfg=None,
            vtype=vtype))

        if workload["runner_type"]:
            results.extend(runner.ScenarioRunner.validate(
                name=workload["runner_type"],
                context=vcontext,
                config=None,
                plugin_cfg=workload["runner"],
                vtype=vtype))

        for context_name, context_conf in workload["contexts"].items():
            results.extend(context.Context.validate(
                name=context_name,
                context=vcontext,
                config=None,
                plugin_cfg=context_conf,
                vtype=vtype))

        for context_name, context_conf in scenario_context.items():
            results.extend(context.Context.validate(
                name=context_name,
                context=vcontext,
                config=None,
                plugin_cfg=context_conf,
                allow_hidden=True,
                vtype=vtype))

        for sla_name, sla_conf in workload["sla"].items():
            results.extend(sla.SLA.validate(
                name=sla_name,
                context=vcontext,
                config=None,
                plugin_cfg=sla_conf,
                vtype=vtype))

        for hook_conf in workload["hooks"]:
            action_name, action_cfg = hook_conf["action"]
            results.extend(hook.HookAction.validate(
                name=action_name,
                context=vcontext,
                config=None,
                plugin_cfg=action_cfg,
                vtype=vtype))

            trigger_name, trigger_cfg = hook_conf["trigger"]
            results.extend(hook.HookTrigger.validate(
                name=trigger_name,
                context=vcontext,
                config=None,
                plugin_cfg=trigger_cfg,
                vtype=vtype))

        if results:
            msg = "\n ".join(results)
            kw = {"name": workload["name"],
                  "pos": workload["position"],
                  "config": json.dumps(
                      objects.Workload.to_task(workload)),
                  "reason": msg}

            raise exceptions.InvalidTaskConfig(**kw)
コード例 #10
0
    def _validate_workload(self, workload, credentials=None, vtype=None):
        scenario_cls = scenario.Scenario.get(workload["name"])
        namespace = scenario_cls.get_platform()
        scenario_context = copy.deepcopy(scenario_cls.get_default_context())

        results = []

        results.extend(
            scenario.Scenario.validate(name=workload["name"],
                                       credentials=credentials,
                                       config=workload,
                                       plugin_cfg=None,
                                       vtype=vtype))

        if workload["runner"]:
            results.extend(
                runner.ScenarioRunner.validate(name=workload["runner"]["type"],
                                               credentials=credentials,
                                               config=None,
                                               plugin_cfg=workload["runner"],
                                               namespace=namespace,
                                               vtype=vtype))

        for context_name, context_conf in workload["context"].items():
            results.extend(
                context.Context.validate(name=context_name,
                                         credentials=credentials,
                                         config=None,
                                         plugin_cfg=context_conf,
                                         namespace=namespace,
                                         vtype=vtype))

        for context_name, context_conf in scenario_context.items():
            results.extend(
                context.Context.validate(name=context_name,
                                         credentials=credentials,
                                         config=None,
                                         plugin_cfg=context_conf,
                                         namespace=namespace,
                                         allow_hidden=True,
                                         vtype=vtype))

        for sla_name, sla_conf in workload["sla"].items():
            results.extend(
                sla.SLA.validate(name=sla_name,
                                 credentials=credentials,
                                 config=None,
                                 plugin_cfg=sla_conf,
                                 vtype=vtype))

        for hook_conf in workload["hooks"]:
            results.extend(
                hook.Hook.validate(name=hook_conf["config"]["name"],
                                   credentials=credentials,
                                   config=None,
                                   plugin_cfg=hook_conf["config"]["args"],
                                   vtype=vtype))

            trigger_conf = hook_conf["config"]["trigger"]
            results.extend(
                trigger.Trigger.validate(name=trigger_conf["name"],
                                         credentials=credentials,
                                         config=None,
                                         plugin_cfg=trigger_conf["args"],
                                         vtype=vtype))

        if results:
            msg = "\n ".join([str(r) for r in results])
            kw = {
                "name": workload["name"],
                "pos": workload["position"],
                "config": json.dumps(objects.Workload.to_task(workload)),
                "reason": msg
            }

            raise exceptions.InvalidTaskConfig(**kw)
コード例 #11
0
ファイル: engine.py プロジェクト: zhangdelong/rally
    def _validate_workload(self, workload, credentials=None, vtype=None):
        scenario_cls = scenario.Scenario.get(workload.name)
        namespace = scenario_cls.get_namespace()
        scenario_context = copy.deepcopy(scenario_cls.get_default_context())

        results = []

        results.extend(
            scenario.Scenario.validate(name=workload.name,
                                       credentials=credentials,
                                       config=workload.to_dict(),
                                       plugin_cfg=None,
                                       vtype=vtype))

        if workload.runner:
            results.extend(
                runner.ScenarioRunner.validate(name=workload.runner["type"],
                                               credentials=credentials,
                                               config=None,
                                               plugin_cfg=workload.runner,
                                               namespace=namespace,
                                               vtype=vtype))

        for context_name, context_conf in workload.context.items():
            results.extend(
                context.Context.validate(name=context_name,
                                         credentials=credentials,
                                         config=None,
                                         plugin_cfg=context_conf,
                                         namespace=namespace,
                                         vtype=vtype))

        for context_name, context_conf in scenario_context.items():
            results.extend(
                context.Context.validate(name=context_name,
                                         credentials=credentials,
                                         config=None,
                                         plugin_cfg=context_conf,
                                         namespace=namespace,
                                         allow_hidden=True,
                                         vtype=vtype))

        for sla_name, sla_conf in workload.sla.items():
            results.extend(
                sla.SLA.validate(name=sla_name,
                                 credentials=credentials,
                                 config=None,
                                 plugin_cfg=sla_conf,
                                 vtype=vtype))

        for hook_conf in workload.hooks:
            results.extend(
                hook.Hook.validate(name=hook_conf["name"],
                                   credentials=credentials,
                                   config=None,
                                   plugin_cfg=hook_conf["args"],
                                   vtype=vtype))

            trigger_conf = hook_conf["trigger"]
            results.extend(
                trigger.Trigger.validate(name=trigger_conf["name"],
                                         credentials=credentials,
                                         config=None,
                                         plugin_cfg=trigger_conf["args"],
                                         vtype=vtype))

        if results:
            msg = "\n ".join([str(r) for r in results])
            kw = workload.make_exception_args(msg)
            raise exceptions.InvalidTaskConfig(**kw)