)]}'
{"rally/plugins/openstack/scenarios/neutron/bgpvpn.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"300f379fad92a4ec64fae6c4a919614c9e274af5","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                admin\u003dTrue, users\u003dTrue)"},{"line_number":193,"context_line":"@validation.add(\"required_contexts\", contexts\u003d(\"router\"))"},{"line_number":194,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup@openstack\": [\"neutron\"],"},{"line_number":195,"context_line":"                             \"cleanup\": [\"neutron\"]},"},{"line_number":196,"context_line":"                    name\u003d\"NeutronBGPVPN.create_bgpvpn_assoc_disassoc_routers\","},{"line_number":197,"context_line":"                    platform\u003d\"openstack\")"},{"line_number":198,"context_line":"class CreateAndAssociateDissassociateRouters(utils.NeutronScenario):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f3283f1_cccc8f63","line":195,"updated":"2017-09-20 22:38:11.000000000","message":"cleanup should be as well with @openstack","commit_id":"248e715b27f3cd09a2f399fa7b286b691f9bbeda"}],"rally/task/scenario.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"412cdb95ca899e6b758107fce5217c07cf218169","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            msg \u003d (_(\"Scenario name must include a dot: \u0027%s\u0027\") % name)"},{"line_number":57,"context_line":"            raise exceptions.RallyException(msg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        for c in context:"},{"line_number":60,"context_line":"            if \"@\" not in c:"},{"line_number":61,"context_line":"                msg \u003d (\"Failed to configure plugin `%(name)s@%(platform)s\u0027. \""},{"line_number":62,"context_line":"                       \"Use full name for `%(context)s\u0027 context\")"},{"line_number":63,"context_line":"                raise exceptions.RallyException("},{"line_number":64,"context_line":"                    msg % {\"name\": name, \"platform\": platform, \"context\": c})"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        cls \u003d plugin.configure(name\u003dname, platform\u003dplatform)(cls)"},{"line_number":67,"context_line":"        cls._meta_setdefault(\"default_context\", {})"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf57530f_2b24080d","line":64,"range":{"start_line":59,"start_character":8,"end_line":64,"end_character":77},"updated":"2017-09-20 16:34:06.000000000","message":"we need to print a warning message instead. It will break all external plugins and external rally jobs as well. For example, see neutron\u0027s thing - https://github.com/openstack/neutron/blob/master/rally-jobs/plugins/trunk_scenario.py","commit_id":"f09d8c8e4927a0ab0f2c5e71778480e8eae9b885"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"25d6c603316ea0e39a4837ea9c81d225bdc9180f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                       \" `%(scenario)s\u0027 scenario. Use full name for \""},{"line_number":63,"context_line":"                       \" `%(context)s\u0027 context (%(full_context)s)\")"},{"line_number":64,"context_line":"                LOG.warning(msg % {\"scenario\": \"%s@%s\" % (name, platform),"},{"line_number":65,"context_line":"                                   \"context\": c.get_name(),"},{"line_number":66,"context_line":"                                   \"full_context\": c.get_fullname()})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        cls \u003d plugin.configure(name\u003dname, platform\u003dplatform)(cls)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_d1e88517","line":65,"range":{"start_line":65,"start_character":46,"end_line":65,"end_character":58},"updated":"2017-09-22 13:40:17.000000000","message":"\"c\" is a string here.\nit causes \"\u0027str\u0027 object has no attribute \u0027get_name\u0027\".","commit_id":"74bfe8e37a11ffb494fd2405cb96c6fe578c57e2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3e6027a71a72e39cd35ac01be9ce4f57dd00a405","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                       \" `%(scenario)s\u0027 scenario. Use full name for \""},{"line_number":63,"context_line":"                       \" `%(context)s\u0027 context (%(full_context)s)\")"},{"line_number":64,"context_line":"                LOG.warning(msg % {\"scenario\": \"%s@%s\" % (name, platform),"},{"line_number":65,"context_line":"                                   \"context\": c.get_name(),"},{"line_number":66,"context_line":"                                   \"full_context\": c.get_fullname()})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        cls \u003d plugin.configure(name\u003dname, platform\u003dplatform)(cls)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_91132d67","line":65,"range":{"start_line":65,"start_character":46,"end_line":65,"end_character":58},"in_reply_to":"7f515b1d_d1e88517","updated":"2017-09-22 14:05:28.000000000","message":"good catch","commit_id":"74bfe8e37a11ffb494fd2405cb96c6fe578c57e2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"25d6c603316ea0e39a4837ea9c81d225bdc9180f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                       \" `%(context)s\u0027 context (%(full_context)s)\")"},{"line_number":64,"context_line":"                LOG.warning(msg % {\"scenario\": \"%s@%s\" % (name, platform),"},{"line_number":65,"context_line":"                                   \"context\": c.get_name(),"},{"line_number":66,"context_line":"                                   \"full_context\": c.get_fullname()})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        cls \u003d plugin.configure(name\u003dname, platform\u003dplatform)(cls)"},{"line_number":69,"context_line":"        cls._meta_setdefault(\"default_context\", {})"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_91f20d06","line":66,"range":{"start_line":66,"start_character":51,"end_line":66,"end_character":67},"updated":"2017-09-22 13:40:17.000000000","message":"ditto","commit_id":"74bfe8e37a11ffb494fd2405cb96c6fe578c57e2"}]}
