)]}'
{"diskimage_builder/block_device/blockdevice.py":[{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"fbd615853ff9a20b0318f0e9d578d30f42643676","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        Generate the configuration digraph from the config"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        :param config: graph configuration file"},{"line_number":175,"context_line":"        :param default_config: default paramaters (from --params)"},{"line_number":176,"context_line":"        :return: tuple with the graph object, nodes in call order"},{"line_number":177,"context_line":"        \"\"\""},{"line_number":178,"context_line":"        # This is the directed graph of nodes: each parse method must"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_a24e1494","line":175,"range":{"start_line":175,"start_character":39,"end_line":175,"end_character":49},"updated":"2017-05-25 08:00:04.000000000","message":"parameters","commit_id":"7bd4733f87dbb74efd9661c7ce6ff9f8afd22c34"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"88b991cf3c1530497b59c4a0de9ba3b6e77110e0","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        Generate the configuration digraph from the config"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        :param config: graph configuration file"},{"line_number":175,"context_line":"        :param default_config: default paramaters (from --params)"},{"line_number":176,"context_line":"        :return: tuple with the graph object, nodes in call order"},{"line_number":177,"context_line":"        \"\"\""},{"line_number":178,"context_line":"        # This is the directed graph of nodes: each parse method must"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_91bebcd2","line":175,"range":{"start_line":175,"start_character":39,"end_line":175,"end_character":49},"in_reply_to":"ff0f0b1f_a24e1494","updated":"2017-05-25 10:19:12.000000000","message":"Done","commit_id":"7bd4733f87dbb74efd9661c7ce6ff9f8afd22c34"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        with open(self.state_json_file_name, \"w\") as fd:"},{"line_number":167,"context_line":"            json.dump(state, fd)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def create_graph(self, config, default_config):"},{"line_number":170,"context_line":"        \"\"\"Generate configuration digraph"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        Generate the configuration digraph from the config"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_6e6337b3","line":169,"updated":"2017-05-25 17:18:25.000000000","message":"This method is somewhat long - split it?\n(pylint: too-many-locals)","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        with open(self.state_json_file_name, \"w\") as fd:"},{"line_number":167,"context_line":"            json.dump(state, fd)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def create_graph(self, config, default_config):"},{"line_number":170,"context_line":"        \"\"\"Generate configuration digraph"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        Generate the configuration digraph from the config"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_50e009fb","line":169,"in_reply_to":"ff0f0b1f_6e6337b3","updated":"2017-05-25 22:39:56.000000000","message":"happy to see this moved into config.py if you like","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        for config_entry in config:"},{"line_number":183,"context_line":"            # this should have been checked by generate_config"},{"line_number":184,"context_line":"            assert(len(config_entry) \u003d\u003d 1)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            logger.debug(\"Config entry [%s]\" % config_entry)"},{"line_number":187,"context_line":"            cfg_obj_name \u003d list(config_entry.keys())[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_eef3c7e6","line":184,"updated":"2017-05-25 17:18:25.000000000","message":"assert isn\u0027t a function; superfluous parens","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        for config_entry in config:"},{"line_number":183,"context_line":"            # this should have been checked by generate_config"},{"line_number":184,"context_line":"            assert(len(config_entry) \u003d\u003d 1)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            logger.debug(\"Config entry [%s]\" % config_entry)"},{"line_number":187,"context_line":"            cfg_obj_name \u003d list(config_entry.keys())[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_10e29102","line":184,"in_reply_to":"ff0f0b1f_eef3c7e6","updated":"2017-05-25 22:39:56.000000000","message":"Done","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            for node in nodes:"},{"line_number":203,"context_line":"                # would only be missing if a plugin was way out of"},{"line_number":204,"context_line":"                # line and didn\u0027t put it in..."},{"line_number":205,"context_line":"                assert(node.name)"},{"line_number":206,"context_line":"                # ensure node names are unique.  networkx by default"},{"line_number":207,"context_line":"                # just appends the attribute to the node dict for"},{"line_number":208,"context_line":"                # existing nodes, which is not what we want."}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_2e2bff30","line":205,"updated":"2017-05-25 17:18:25.000000000","message":"also here.","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            for node in nodes:"},{"line_number":203,"context_line":"                # would only be missing if a plugin was way out of"},{"line_number":204,"context_line":"                # line and didn\u0027t put it in..."},{"line_number":205,"context_line":"                assert(node.name)"},{"line_number":206,"context_line":"                # ensure node names are unique.  networkx by default"},{"line_number":207,"context_line":"                # just appends the attribute to the node dict for"},{"line_number":208,"context_line":"                # existing nodes, which is not what we want."}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_f0eefdeb","line":205,"in_reply_to":"ff0f0b1f_2e2bff30","updated":"2017-05-25 22:39:56.000000000","message":"Done","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                if node.name in dg.node:"},{"line_number":210,"context_line":"                    raise BlockDeviceSetupException("},{"line_number":211,"context_line":"                        \"Duplicate node name: %s\" % (node.name))"},{"line_number":212,"context_line":"                logger.debug(\"Adding %s : %s\" % (node.name, node))"},{"line_number":213,"context_line":"                dg.add_node(node.name, obj\u003dnode)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        # Now find edges"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_0ee5db0a","line":212,"updated":"2017-05-25 17:18:25.000000000","message":"\u0027,\u0027 instead of \u0027%\u0027.","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                if node.name in dg.node:"},{"line_number":210,"context_line":"                    raise BlockDeviceSetupException("},{"line_number":211,"context_line":"                        \"Duplicate node name: %s\" % (node.name))"},{"line_number":212,"context_line":"                logger.debug(\"Adding %s : %s\" % (node.name, node))"},{"line_number":213,"context_line":"                dg.add_node(node.name, obj\u003dnode)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        # Now find edges"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_d0ebf9d9","line":212,"in_reply_to":"ff0f0b1f_0ee5db0a","updated":"2017-05-25 22:39:56.000000000","message":"Done","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            #  edges_from are the nodes that point to us"},{"line_number":224,"context_line":"            #  edges_to are the nodes we point to"},{"line_number":225,"context_line":"            edges_from, edges_to \u003d obj.get_edges()"},{"line_number":226,"context_line":"            logger.debug(\"Edges for %s: f:%s t:%s\" %"},{"line_number":227,"context_line":"                         (name, edges_from, edges_to))"},{"line_number":228,"context_line":"            for edge_from in edges_from:"},{"line_number":229,"context_line":"                if edge_from not in dg.node:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_eecaa76c","line":226,"updated":"2017-05-25 17:18:25.000000000","message":"\u0027,\u0027 instead of \u0027%\u0027.","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            #  edges_from are the nodes that point to us"},{"line_number":224,"context_line":"            #  edges_to are the nodes we point to"},{"line_number":225,"context_line":"            edges_from, edges_to \u003d obj.get_edges()"},{"line_number":226,"context_line":"            logger.debug(\"Edges for %s: f:%s t:%s\" %"},{"line_number":227,"context_line":"                         (name, edges_from, edges_to))"},{"line_number":228,"context_line":"            for edge_from in edges_from:"},{"line_number":229,"context_line":"                if edge_from not in dg.node:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_b0bac5de","line":226,"in_reply_to":"ff0f0b1f_eecaa76c","updated":"2017-05-25 22:39:56.000000000","message":"Done","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # Topological sort (i.e. create a linear array that satisfies"},{"line_number":245,"context_line":"        # dependencies) and return the object list"},{"line_number":246,"context_line":"        call_order_nodes \u003d nx.topological_sort(dg)"},{"line_number":247,"context_line":"        logger.debug(\"Call order: %s\" % list(call_order_nodes))"},{"line_number":248,"context_line":"        call_order \u003d [dg.node[n][\u0027obj\u0027] for n in call_order_nodes]"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        return dg, call_order"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_2e877f12","line":247,"updated":"2017-05-25 17:18:25.000000000","message":"\u0027,\u0027 instead of \u0027%\u0027.","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # Topological sort (i.e. create a linear array that satisfies"},{"line_number":245,"context_line":"        # dependencies) and return the object list"},{"line_number":246,"context_line":"        call_order_nodes \u003d nx.topological_sort(dg)"},{"line_number":247,"context_line":"        logger.debug(\"Call order: %s\" % list(call_order_nodes))"},{"line_number":248,"context_line":"        call_order \u003d [dg.node[n][\u0027obj\u0027] for n in call_order_nodes]"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        return dg, call_order"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_90bfc1cf","line":247,"in_reply_to":"ff0f0b1f_2e877f12","updated":"2017-05-25 22:39:56.000000000","message":"Done","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"}],"diskimage_builder/block_device/level2/mkfs.py":[{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        logger.debug(\"Filesystem created [%s]\" % self)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_edges(self):"},{"line_number":100,"context_line":"        edge_from \u003d [self.base]"},{"line_number":101,"context_line":"        edge_to \u003d []"},{"line_number":102,"context_line":"        return (edge_from, edge_to)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_2e03ff75","line":99,"updated":"2017-05-25 17:18:25.000000000","message":"Why did you drop the __repr__?\nIMHO it is handy for logging output.","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"f8b642ad7f7c68963379d4568e7e2eb58054e42e","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        logger.debug(\"Filesystem created [%s]\" % self)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_edges(self):"},{"line_number":100,"context_line":"        edge_from \u003d [self.base]"},{"line_number":101,"context_line":"        edge_to \u003d []"},{"line_number":102,"context_line":"        return (edge_from, edge_to)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_d0c41962","line":99,"in_reply_to":"ff0f0b1f_2e03ff75","updated":"2017-05-25 22:39:56.000000000","message":"Because it\u0027s inconsistently implemented so when you print the node list you get a mix of these long strings and just names which is hard to figure out.  happy to see something put in that\u0027s more consistent","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"}],"diskimage_builder/block_device/level3/mount.py":[{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"fbd615853ff9a20b0318f0e9d578d30f42643676","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            edge_from.append(dep.name)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        edge_from.append(self.base)"},{"line_number":90,"context_line":"        logger.debug(\"my edges from are : %s\" % edge_from)"},{"line_number":91,"context_line":"        return (edge_from, edge_to)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def create(self, result, rollback):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_450aa21f","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":20},"updated":"2017-05-25 08:00:04.000000000","message":"You could add here that you are on level 3 (mount), so it will be more clear at debugging time","commit_id":"7bd4733f87dbb74efd9661c7ce6ff9f8afd22c34"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"88b991cf3c1530497b59c4a0de9ba3b6e77110e0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            edge_from.append(dep.name)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        edge_from.append(self.base)"},{"line_number":90,"context_line":"        logger.debug(\"my edges from are : %s\" % edge_from)"},{"line_number":91,"context_line":"        return (edge_from, edge_to)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def create(self, result, rollback):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_11e98ce4","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":20},"in_reply_to":"ff0f0b1f_450aa21f","updated":"2017-05-25 10:19:12.000000000","message":"oh, sorry, this one was from debugging and not supposed to be left in.  will remove","commit_id":"7bd4733f87dbb74efd9661c7ce6ff9f8afd22c34"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ba1bfc018f858365829aa480537e6025c455003d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        Digraph.Node.__init__(self, self.name)"},{"line_number":46,"context_line":"        logger.debug(\"MountPoint created [%s]\" % self)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_node(self):"},{"line_number":49,"context_line":"        global mount_points"},{"line_number":50,"context_line":"        if self.mount_point in mount_points:"},{"line_number":51,"context_line":"            raise BlockDeviceSetupException("}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_ce1fe3b5","line":48,"updated":"2017-05-25 17:18:25.000000000","message":"... same here ...","commit_id":"984f922bf882b10977e31b6c01ca92ee9e4b862a"}],"diskimage_builder/block_device/tests/config/bad_edge_graph.yaml":[{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"fbd615853ff9a20b0318f0e9d578d30f42643676","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- local_loop:"},{"line_number":2,"context_line":"    name: image0"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"- partitioning:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ff0f0b1f_c52eb28a","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":12},"updated":"2017-05-25 08:00:04.000000000","message":"it would be nice if you add a header with comments, on each tests, referencing the kind of testing you want to achieve","commit_id":"7bd4733f87dbb74efd9661c7ce6ff9f8afd22c34"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"88b991cf3c1530497b59c4a0de9ba3b6e77110e0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- local_loop:"},{"line_number":2,"context_line":"    name: image0"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"- partitioning:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ff0f0b1f_d119d421","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":12},"in_reply_to":"ff0f0b1f_c52eb28a","updated":"2017-05-25 10:19:12.000000000","message":"the test using this config does have a comment [1], line 119\n\n[1] https://review.openstack.org/#/c/467419/5/diskimage_builder/block_device/tests/test_config.py","commit_id":"7bd4733f87dbb74efd9661c7ce6ff9f8afd22c34"}]}
