)]}'
{"akanda/rug/test/functional/base.py":[{"author":{"_account_id":6287,"name":"David Lenwell","email":"dlenwell@gmail.com","username":"dlenwell"},"change_message_id":"0e4b3d4fd21d2c416ea51d5c569880ccadf220ae","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class TestTenant(object):"},{"line_number":123,"context_line":"    def __init__(self):"},{"line_number":124,"context_line":"        self.username \u003d data_utils.rand_name(name\u003d\u0027user\u0027, prefix\u003d\u0027akanda\u0027)"},{"line_number":125,"context_line":"        self.user_id \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_57dd9840","line":122,"updated":"2015-09-22 18:35:57.000000000","message":"we\u0027re being inconsistent with the doc strings here.. some of these classes explain what they are for on top and some don\u0027t..","commit_id":"9d00b35814c5c7578aa8c0d4b421d4024d315739"}],"astara/api/astara_client.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"60929d94e18a4e4fc41b88e6ad89c44465aa7056","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    return s"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def is_alive(host, port, timeout\u003dcfg.CONF.alive_timeout):"},{"line_number":51,"context_line":"    path \u003d ASTARA_BASE_PATH + \u0027firewall/rules\u0027"},{"line_number":52,"context_line":"    try:"},{"line_number":53,"context_line":"        s \u003d _get_proxyless_session()"}],"source_content_type":"text/x-python","patch_set":28,"id":"da6ed579_f1474075","line":50,"range":{"start_line":50,"start_character":25,"end_line":50,"end_character":32},"updated":"2016-01-12 22:07:28.000000000","message":"This value is read at code import time which is before the configuration is loaded.  Consider:\n\ndef is_alive(host, port, timeout\u003dNone):\n    if timeout is None:\n         timeout \u003d cfg.CONF.alive_timeout\n\n...","commit_id":"cf516ad038b2867f7b1998bd5932404f902cf20e"}],"astara/test/functional/base.py":[{"author":{"_account_id":986,"name":"Rosario Di Somma","email":"rosario.disomma@gmail.com","username":"mr-rods"},"change_message_id":"3ef51e517d5362b09dbc3849bd40d38de1785735","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        self.ak_cfg.alive_timeout \u003d 10"},{"line_number":248,"context_line":"        self.ak_client \u003d astara_client"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        self.admin_clients \u003d ClientManager("},{"line_number":251,"context_line":"            username\u003dself.config[\u0027os_username\u0027],"},{"line_number":252,"context_line":"            password\u003dself.config[\u0027os_password\u0027],"},{"line_number":253,"context_line":"            tenant_name\u003dself.config[\u0027os_tenant_name\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a710552_8447934a","line":250,"updated":"2015-12-15 19:26:55.000000000","message":"Shouldn\u0027t this just be self.admin_clients \u003d AdminClientManager() ?\nIf so, the above call to get_config() shouldn\u0027t need.","commit_id":"85999c4dd8e5509941c0ec195d1a12a231fa1081"},{"author":{"_account_id":8005,"name":"Ryan Petrello","email":"ryan@ryanpetrello.com","username":"ryanpetrello"},"change_message_id":"3cd4af38d39e2b2b7ae15577f4732909f1a89da6","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self._admin_ks_client \u003d admin_ks_client"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        # create the tenant before creating its clients."},{"line_number":150,"context_line":"        self._create()"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        self.clients \u003d ClientManager(self.username, self.password,"},{"line_number":153,"context_line":"                                     self.tenant_name, self.auth_url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_387880f8","line":150,"range":{"start_line":150,"start_character":13,"end_line":150,"end_character":20},"updated":"2016-01-07 20:03:26.000000000","message":"Could we give this a better name, e.g., `_create_tenant` ?","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"},{"author":{"_account_id":8005,"name":"Ryan Petrello","email":"ryan@ryanpetrello.com","username":"ryanpetrello"},"change_message_id":"3cd4af38d39e2b2b7ae15577f4732909f1a89da6","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        :returns: a (network dict, router dict) tuple"},{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":"        # NOTE(adam_g): I didn\u0027t expect simply creating a network"},{"line_number":172,"context_line":"        # to also create a subnet and router automatically, but this"},{"line_number":173,"context_line":"        # does?"},{"line_number":174,"context_line":"        net_body \u003d {"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_9873ac15","line":171,"range":{"start_line":171,"start_character":26,"end_line":171,"end_character":30},"updated":"2016-01-07 20:03:26.000000000","message":"Is this still the case, given the optional flag added to astara-neutron?  If want to continue using that behavior for the test, perhaps we should explicitly specify the flag here so it\u0027s clearer.","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"}],"astara/test/functional/test_tenant_router.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f0e7c02ebc94f54c30670545697087e1b4d44524","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        ports \u003d self.neutronclient.list_ports()[\u0027ports\u0027]"},{"line_number":42,"context_line":"        subnets \u003d self.neutronclient.list_subnets(network_id\u003dnetwork[\u0027id\u0027])"},{"line_number":43,"context_line":"        subnets \u003d subnets[\u0027subnets\u0027]"},{"line_number":44,"context_line":"        self.assertEquals(len(ports), len(subnets))"},{"line_number":45,"context_line":"        for port in ports:"},{"line_number":46,"context_line":"            self.assertEquals(port[\u0027device_owner\u0027], \u0027network:router_interface\u0027)"},{"line_number":47,"context_line":"            self.assertEquals(port[\u0027device_id\u0027], router[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_d5732de6","line":44,"range":{"start_line":44,"start_character":13,"end_line":44,"end_character":25},"updated":"2016-01-07 19:43:21.000000000","message":"assertEqual()","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f0e7c02ebc94f54c30670545697087e1b4d44524","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        subnets \u003d subnets[\u0027subnets\u0027]"},{"line_number":44,"context_line":"        self.assertEquals(len(ports), len(subnets))"},{"line_number":45,"context_line":"        for port in ports:"},{"line_number":46,"context_line":"            self.assertEquals(port[\u0027device_owner\u0027], \u0027network:router_interface\u0027)"},{"line_number":47,"context_line":"            self.assertEquals(port[\u0027device_id\u0027], router[\u0027id\u0027])"},{"line_number":48,"context_line":"            self.assertEquals("},{"line_number":49,"context_line":"                sorted([subnet[\u0027id\u0027] for subnet in subnets]),"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_7580418c","line":46,"updated":"2016-01-07 19:43:21.000000000","message":"same","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f0e7c02ebc94f54c30670545697087e1b4d44524","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.assertEquals(len(ports), len(subnets))"},{"line_number":45,"context_line":"        for port in ports:"},{"line_number":46,"context_line":"            self.assertEquals(port[\u0027device_owner\u0027], \u0027network:router_interface\u0027)"},{"line_number":47,"context_line":"            self.assertEquals(port[\u0027device_id\u0027], router[\u0027id\u0027])"},{"line_number":48,"context_line":"            self.assertEquals("},{"line_number":49,"context_line":"                sorted([subnet[\u0027id\u0027] for subnet in subnets]),"},{"line_number":50,"context_line":"                sorted([fip[\u0027subnet_id\u0027] for fip in port[\u0027fixed_ips\u0027]])"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_554e5d97","line":47,"updated":"2016-01-07 19:43:21.000000000","message":"same","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"f0e7c02ebc94f54c30670545697087e1b4d44524","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        for port in ports:"},{"line_number":46,"context_line":"            self.assertEquals(port[\u0027device_owner\u0027], \u0027network:router_interface\u0027)"},{"line_number":47,"context_line":"            self.assertEquals(port[\u0027device_id\u0027], router[\u0027id\u0027])"},{"line_number":48,"context_line":"            self.assertEquals("},{"line_number":49,"context_line":"                sorted([subnet[\u0027id\u0027] for subnet in subnets]),"},{"line_number":50,"context_line":"                sorted([fip[\u0027subnet_id\u0027] for fip in port[\u0027fixed_ips\u0027]])"},{"line_number":51,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_d55a4d50","line":48,"range":{"start_line":48,"start_character":24,"end_line":48,"end_character":25},"updated":"2016-01-07 19:43:21.000000000","message":"same","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"},{"author":{"_account_id":8005,"name":"Ryan Petrello","email":"ryan@ryanpetrello.com","username":"ryanpetrello"},"change_message_id":"3cd4af38d39e2b2b7ae15577f4732909f1a89da6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.admin_clients.novaclient.servers.delete(old_server.id)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # sleep for health_check_period (set by devstack)"},{"line_number":70,"context_line":"        time.sleep(10)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # look for the new server, retry giving rug time to do its thing."},{"line_number":73,"context_line":"        new_server \u003d self.get_router_appliance_server("}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_f810a85b","line":70,"range":{"start_line":70,"start_character":18,"end_line":70,"end_character":19},"updated":"2016-01-07 20:03:26.000000000","message":"should we actually use the health_check_period, in case it\u0027s not 10?","commit_id":"e8818426bfb3538653f77c494a57b87d99646753"}]}
