)]}'
{"rally/plugins/openstack/validators.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"fb8d48510679cb7d87dfa23ae30e222d98187109","unresolved":false,"context_lines":[{"line_number":21,"context_line":"@plugin.configure(name\u003d\"required_openstack\")"},{"line_number":22,"context_line":"class RequiredOpenstackValidator(validation.Validator):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def __init__(self, admin\u003dFalse, users\u003dFalse):"},{"line_number":25,"context_line":"        super(RequiredOpenstackValidator, self).__init__()"},{"line_number":26,"context_line":"        self.admin \u003d admin"},{"line_number":27,"context_line":"        self.users \u003d users"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def validate(self, cache, deployment, config, plugin_cls, plugin_cfg):"},{"line_number":30,"context_line":"        \"\"\"Validator that requires OpenStack admin or (and) users."}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_dc75ce32","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":26},"updated":"2017-02-02 14:36:00.000000000","message":"Let\u0027s create a base class for all similar \"platform\" decorators and move this code there. It will help to obtain unified information about plugin.","commit_id":"e4432d5d23d715b2bb6e4e16552d03d143292679"}],"rally/task/engine.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"fb8d48510679cb7d87dfa23ae30e222d98187109","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def _validate_config_semantic_helper(self, admin, user, workload, pos,"},{"line_number":303,"context_line":"                                         deployment):"},{"line_number":304,"context_line":"        # validation v2"},{"line_number":305,"context_line":"        scenario_cls \u003d scenario.Scenario.get(workload.name)"},{"line_number":306,"context_line":"        results \u003d validation.validate(plugin\u003dscenario_cls,"},{"line_number":307,"context_line":"                                      deployment\u003ddeployment,"},{"line_number":308,"context_line":"                                      config\u003dworkload.to_dict(),"},{"line_number":309,"context_line":"                                      plugin_cfg\u003dNone)"},{"line_number":310,"context_line":"        if results:"},{"line_number":311,"context_line":"            msg \u003d \", \".join([r.msg for r in results])"},{"line_number":312,"context_line":"            kw \u003d workload.make_exception_args(pos, msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_654b5eb1","line":309,"range":{"start_line":304,"start_character":8,"end_line":309,"end_character":54},"updated":"2017-02-02 14:36:00.000000000","message":"Can we merge these calls somehow into one? It would be nice to have a common method with unified arguments for all plugins in Plugin base class.","commit_id":"e4432d5d23d715b2bb6e4e16552d03d143292679"}]}
