)]}'
{"ironic/api/controllers/base.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a59f217c802b9a1cfd9c0cefdde257e767aed6f4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return (a.major \u003d\u003d b.major and a.minor \u003c b.minor)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return (a.major \u003d\u003d b.major and a.minor \u003e b.minor)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_d6cce68a","line":110,"updated":"2015-08-07 09:04:52.000000000","message":"nit: parentheses not needed","commit_id":"0842332487a8d29b89713a89381b3466640ee183"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8022576b053c402841ff53e56ed14267857f369d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return version"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __lt__(a, b):"},{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_dd7ffe64","line":107,"updated":"2015-08-07 21:59:36.000000000","message":"So if a.major \u003d 2 and b.major \u003d 1, then __lt__ and __gt__ will return False??\n\nSeems like a bug.","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"0dbff25ebe21a348afe5999362597288a9cfe26f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return version"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __lt__(a, b):"},{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_e5f573cb","line":107,"in_reply_to":"1a4dcd0f_dd7ffe64","updated":"2015-08-09 05:49:53.000000000","message":"Thank you John, i\u0027m not sure, because i think the _lt_ and _gt_ are functions to compare \"a.minor\" and \"b.minor\", maybe \"a.major \u003d\u003d a.major\" is a business rule in this case, but could also be a bug. I\u0027m updating another patch to address your other comments, let\u0027s wait other people about this.","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0642dee8dbd51122a3956037002814849b4f1f27","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return version"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __lt__(a, b):"},{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_4bd1bffa","line":107,"updated":"2015-08-10 10:20:17.000000000","message":"+1, please fix","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"b06992c1f0c649d674d25ffb30e41ae0af169368","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return version"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __lt__(a, b):"},{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_a5cbe61d","line":107,"updated":"2015-08-09 16:16:28.000000000","message":"It could be:\n\n return (a.major, a.minor) \u003c (b.major, b.minor)\n\nWhich I think would handle cases where the major values differ.","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"988d7ce922ca7bafc590dbf609084e5f515a8caf","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return version"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def __lt__(a, b):"},{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_a86ced08","line":107,"in_reply_to":"1a4dcd0f_a5cbe61d","updated":"2015-08-10 18:17:08.000000000","message":"Done","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0642dee8dbd51122a3956037002814849b4f1f27","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_6bcefb5b","line":110,"updated":"2015-08-10 10:20:17.000000000","message":"pleae add __eq__ for consistency","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"988d7ce922ca7bafc590dbf609084e5f515a8caf","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003c b.minor"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __gt__(a, b):"},{"line_number":110,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003e b.minor"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_6877c5d4","line":110,"in_reply_to":"1a4dcd0f_6bcefb5b","updated":"2015-08-10 18:17:08.000000000","message":"Done","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"4e5df3e3497a31aa34b06808e16d68ceecc5dec9","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return (a.major, a.minor) \u003e (b.major, b.minor)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def __eq__(a, b):"},{"line_number":113,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003d\u003d b.minor"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_0bd39b60","line":113,"updated":"2015-08-10 18:25:32.000000000","message":"nit:\n\n return (a.major, a.minor) \u003d\u003d (b.major, b.minor)\n\nMakes it consistent with other functions.","commit_id":"6fa1eb68159efaf12f965a86c73e1bc116bb22b8"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"00ed4280de6a93595da7a463f9d3dfea1ab1f455","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return (a.major, a.minor) \u003e (b.major, b.minor)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def __eq__(a, b):"},{"line_number":113,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003d\u003d b.minor"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_cbb613f9","line":113,"in_reply_to":"1a4dcd0f_0bd39b60","updated":"2015-08-10 18:30:08.000000000","message":"Changing my mind to \u0027not a nit\u0027.  I think the consistency is important.","commit_id":"6fa1eb68159efaf12f965a86c73e1bc116bb22b8"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"78c9eff9ff681e5af5a9b6297bbde96e5e3553fa","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return (a.major, a.minor) \u003e (b.major, b.minor)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def __eq__(a, b):"},{"line_number":113,"context_line":"        return a.major \u003d\u003d b.major and a.minor \u003d\u003d b.minor"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_ab34e749","line":113,"in_reply_to":"1a4dcd0f_cbb613f9","updated":"2015-08-10 18:35:47.000000000","message":"Done, me too :)","commit_id":"6fa1eb68159efaf12f965a86c73e1bc116bb22b8"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a59f217c802b9a1cfd9c0cefdde257e767aed6f4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"# All Ri ghts Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_96997e7b","line":2,"updated":"2015-08-07 09:04:52.000000000","message":"Ops","commit_id":"0842332487a8d29b89713a89381b3466640ee183"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"e83e861c1575e943646c84bf3c0b5800a2321abd","unresolved":false,"context_lines":[{"line_number":829,"context_line":"            nodes \u003d self._get_nodes_by_instance(instance_uuid)"},{"line_number":830,"context_line":"        else:"},{"line_number":831,"context_line":"            filters \u003d {}"},{"line_number":832,"context_line":"            if chassis_uuid is not None:"},{"line_number":833,"context_line":"                filters[\u0027chassis_uuid\u0027] \u003d chassis_uuid"},{"line_number":834,"context_line":"            if associated is not None:"},{"line_number":835,"context_line":"                filters[\u0027associated\u0027] \u003d associated"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_06d3fb60","line":832,"updated":"2015-08-07 10:52:58.000000000","message":"are we allowing empty string here? if chassis_uuid \u003d\u0027 \u0027, it passes the case right?","commit_id":"0842332487a8d29b89713a89381b3466640ee183"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a59f217c802b9a1cfd9c0cefdde257e767aed6f4","unresolved":false,"context_lines":[{"line_number":899,"context_line":"            raise wsme.exc.ClientSideError("},{"line_number":900,"context_line":"                _(\"Node %s can not update the driver while the console is \""},{"line_number":901,"context_line":"                  \"enabled. Please stop the console first.\") % node_ident,"},{"line_number":902,"context_line":"                status_code\u003d409)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"    @expose.expose(NodeCollection, types.uuid, types.uuid, types.boolean,"},{"line_number":905,"context_line":"                   types.boolean, wtypes.text, types.uuid, int, wtypes.text,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_96d5fee5","line":902,"updated":"2015-08-07 09:04:52.000000000","message":"Not sure about those if they are only being used in one place... Also if we want to break then into their own methods some docstrings would be good as well (Instead of having comments explaining what the method does like that)","commit_id":"0842332487a8d29b89713a89381b3466640ee183"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"e83e861c1575e943646c84bf3c0b5800a2321abd","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        #             and raises NoValidHost if it is not."},{"line_number":1029,"context_line":"        #             We need to ensure that node has a UUID before it can"},{"line_number":1030,"context_line":"        #             be mapped onto the hash ring."},{"line_number":1031,"context_line":"        if node.uuid is None:"},{"line_number":1032,"context_line":"            node.uuid \u003d uuidutils.generate_uuid()"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_260b97d7","line":1031,"updated":"2015-08-07 10:52:58.000000000","message":"In case of None or empty also we need to generate? so it should be if not node.uuid only right","commit_id":"0842332487a8d29b89713a89381b3466640ee183"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8022576b053c402841ff53e56ed14267857f369d","unresolved":false,"context_lines":[{"line_number":573,"context_line":"        # because it\u0027s an API-only attribute."},{"line_number":574,"context_line":"        fields.append(\u0027chassis_uuid\u0027)"},{"line_number":575,"context_line":"        for k in fields:"},{"line_number":576,"context_line":"            # Skip fields we do not expose."},{"line_number":577,"context_line":"            if hasattr(self, k):"},{"line_number":578,"context_line":"                self.fields.append(k)"},{"line_number":579,"context_line":"                setattr(self, k, kwargs.get(k, wtypes.Unset))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_5a7d34b0","line":576,"updated":"2015-08-07 21:59:36.000000000","message":"maybe:\n\n# Add fields we expose","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"0dbff25ebe21a348afe5999362597288a9cfe26f","unresolved":false,"context_lines":[{"line_number":573,"context_line":"        # because it\u0027s an API-only attribute."},{"line_number":574,"context_line":"        fields.append(\u0027chassis_uuid\u0027)"},{"line_number":575,"context_line":"        for k in fields:"},{"line_number":576,"context_line":"            # Skip fields we do not expose."},{"line_number":577,"context_line":"            if hasattr(self, k):"},{"line_number":578,"context_line":"                self.fields.append(k)"},{"line_number":579,"context_line":"                setattr(self, k, kwargs.get(k, wtypes.Unset))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_a5ff6ba9","line":576,"in_reply_to":"1a4dcd0f_5a7d34b0","updated":"2015-08-09 05:49:53.000000000","message":"Done","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8022576b053c402841ff53e56ed14267857f369d","unresolved":false,"context_lines":[{"line_number":866,"context_line":""},{"line_number":867,"context_line":"    def _node_name_is_valid(self, name, error_msg):"},{"line_number":868,"context_line":"        \"\"\"Verify if a node \u0027name\u0027 is valid."},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        :param name: node name"},{"line_number":871,"context_line":"        :param error_msg: error message in case of wsme.exc.ClientSideError"},{"line_number":872,"context_line":"        :raises: exception.NotAcceptable"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_7d126a5a","line":869,"updated":"2015-08-07 21:59:36.000000000","message":"Maybe add that function does not return a value but will raise an exception for unacceptable names","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"0dbff25ebe21a348afe5999362597288a9cfe26f","unresolved":false,"context_lines":[{"line_number":866,"context_line":""},{"line_number":867,"context_line":"    def _node_name_is_valid(self, name, error_msg):"},{"line_number":868,"context_line":"        \"\"\"Verify if a node \u0027name\u0027 is valid."},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        :param name: node name"},{"line_number":871,"context_line":"        :param error_msg: error message in case of wsme.exc.ClientSideError"},{"line_number":872,"context_line":"        :raises: exception.NotAcceptable"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_452b0734","line":869,"in_reply_to":"1a4dcd0f_7d126a5a","updated":"2015-08-09 05:49:53.000000000","message":"Done","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8022576b053c402841ff53e56ed14267857f369d","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"            #             one that doesn\u0027t exist."},{"line_number":1126,"context_line":"            e.code \u003d 400"},{"line_number":1127,"context_line":"            raise e"},{"line_number":1128,"context_line":"        self._verify_driver_changed_and_console_enabled(rpc_node, node_ident)"},{"line_number":1129,"context_line":"        new_node \u003d pecan.request.rpcapi.update_node("},{"line_number":1130,"context_line":"            pecan.request.context, rpc_node, topic)"},{"line_number":1131,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_dd5a9e2a","line":1128,"updated":"2015-08-07 21:59:36.000000000","message":"Should we be losing the \u0027NOTE(lucasgomes)\u0027 portion?  maybe it should go here or in the new function?","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"0dbff25ebe21a348afe5999362597288a9cfe26f","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"            #             one that doesn\u0027t exist."},{"line_number":1126,"context_line":"            e.code \u003d 400"},{"line_number":1127,"context_line":"            raise e"},{"line_number":1128,"context_line":"        self._verify_driver_changed_and_console_enabled(rpc_node, node_ident)"},{"line_number":1129,"context_line":"        new_node \u003d pecan.request.rpcapi.update_node("},{"line_number":1130,"context_line":"            pecan.request.context, rpc_node, topic)"},{"line_number":1131,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_6530839f","line":1128,"in_reply_to":"1a4dcd0f_dd5a9e2a","updated":"2015-08-09 05:49:53.000000000","message":"Actually i\u0027m not sure if we should maintain it here, the doc of the new function already explained the motivation of using this verification.\nDo you suggest i should add the \u0027NOTE(lucasagomes)\u0027 in the doc of the new function, or just before the \u0027if\u0027 statement?\n\nThanks","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0642dee8dbd51122a3956037002814849b4f1f27","unresolved":false,"context_lines":[{"line_number":865,"context_line":"            return []"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"    def _node_name_is_valid(self, name, error_msg):"},{"line_number":868,"context_line":"        \"\"\"Checks if a node \u0027name\u0027 is valid, it does not return a value."},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        This function will raise an exception for unacceptable names."},{"line_number":871,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_abeba3af","line":868,"updated":"2015-08-10 10:20:17.000000000","message":"s/valid/acceptable/ both in fuction name and in description, because it also raises if names are not supported in this API version. So e.g. function should be called _check_name_acceptable (\"check\" because it\u0027s raising, not retuning True/False)","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"988d7ce922ca7bafc590dbf609084e5f515a8caf","unresolved":false,"context_lines":[{"line_number":865,"context_line":"            return []"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"    def _node_name_is_valid(self, name, error_msg):"},{"line_number":868,"context_line":"        \"\"\"Checks if a node \u0027name\u0027 is valid, it does not return a value."},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        This function will raise an exception for unacceptable names."},{"line_number":871,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_2881bd8f","line":868,"in_reply_to":"1a4dcd0f_abeba3af","updated":"2015-08-10 18:17:08.000000000","message":"Done","commit_id":"aba4328b5b0cedc68231144aeca28368c6177c93"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"06b3bfd55189c89d894d0ab1036deab675fae765","unresolved":false,"context_lines":[{"line_number":881,"context_line":"                raise wsme.exc.ClientSideError(error_msg, status_code\u003d400)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def _update_changed_fields(self, node, rpc_node):"},{"line_number":884,"context_line":"        \"\"\"Update rpc_node based on changed fields in a node."},{"line_number":885,"context_line":""},{"line_number":886,"context_line":"        \"\"\""},{"line_number":887,"context_line":"        for field in objects.Node.fields:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_abb375e8","line":884,"updated":"2015-08-11 05:22:11.000000000","message":"nit: you can end the docstring in the same line or may be document it completely.","commit_id":"c3b64e938f1ab6ba2021fe56231a01eba6bced7a"}],"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a59f217c802b9a1cfd9c0cefdde257e767aed6f4","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def _get_ports_collection(self, node_ident, address, marker, limit,"},{"line_number":195,"context_line":"                              sort_key, sort_dir, resource_url\u003dNone,"},{"line_number":196,"context_line":"                              fields\u003dNone):"},{"line_number":197,"context_line":"        if self.from_nodes and node_ident is None:"},{"line_number":198,"context_line":"            raise exception.MissingParameterValue("},{"line_number":199,"context_line":"                _(\"Node identifier not specified.\"))"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_76571226","line":197,"updated":"2015-08-07 09:04:52.000000000","message":"-1\n\nSee comment at https://review.openstack.org/#/c/210209/1/ironic/api/controllers/v1/utils.py","commit_id":"0842332487a8d29b89713a89381b3466640ee183"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8022576b053c402841ff53e56ed14267857f369d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        #                    because it\u0027s an API-only attribute"},{"line_number":98,"context_line":"        fields.append(\u0027node_uuid\u0027)"},{"line_number":99,"context_line":"        for field in fields:"},{"line_number":100,"context_line":"            # Skip fields we do not expose."},{"line_number":101,"context_line":"            if hasattr(self, field):"},{"line_number":102,"context_line":"                self.fields.append(field)"},{"line_number":103,"context_line":"                setattr(self, field, kwargs.get(field, wtypes.Unset))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_dab9447b","line":100,"updated":"2015-08-07 21:59:36.000000000","message":"Maybe the comment can be updated too.\n\n # Add fields we expose\n\n???","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"0dbff25ebe21a348afe5999362597288a9cfe26f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        #                    because it\u0027s an API-only attribute"},{"line_number":98,"context_line":"        fields.append(\u0027node_uuid\u0027)"},{"line_number":99,"context_line":"        for field in fields:"},{"line_number":100,"context_line":"            # Skip fields we do not expose."},{"line_number":101,"context_line":"            if hasattr(self, field):"},{"line_number":102,"context_line":"                self.fields.append(field)"},{"line_number":103,"context_line":"                setattr(self, field, kwargs.get(field, wtypes.Unset))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_85190f25","line":100,"in_reply_to":"1a4dcd0f_dab9447b","updated":"2015-08-09 05:49:53.000000000","message":"Done","commit_id":"29a48d210a3879579bc4580516c7a24b391f31d8"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a59f217c802b9a1cfd9c0cefdde257e767aed6f4","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    :returns: A WSME response object to be returned by the API."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    \"\"\""},{"line_number":140,"context_line":"    if method is None:"},{"line_number":141,"context_line":"        raise wsme.exc.ClientSideError(_(\"Method not specified\"))"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    if data is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_160ece8b","line":140,"updated":"2015-08-07 09:04:52.000000000","message":"I usually think that \"is None\" or \"is \u003csentinel\u003e\" is right to use when the value tested is a placeholder for that parameter, for example: The parameter data there uses None as a placeholder.\n\nNow method, if one inputs \u0027\u0027 (an empty string) this will continue, it won\u0027t raise any exception, which is bad form","commit_id":"0842332487a8d29b89713a89381b3466640ee183"}]}
