)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"8052ac3fbdd79bd9d73db79d446157e9c665f2bd","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Manage node -"},{"line_number":36,"context_line":"openstack valence node manage \u003cnode_index\u003e \u003cpodm_uuid\u003e"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Implements: blueprint valence-nodes-cli"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Change-Id: I32bc2021f2717436688fb5b78bcd8d63c69e82ca"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f2577a7_a8f19097","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":11},"updated":"2017-09-15 09:44:48.000000000","message":"node action seems to be missing. Please Add TODO for the same and make it as Partially Implements, if you would like to add it separate patch?","commit_id":"345804c8a32e6d08d206c1d64531a02066d0ad30"}],"valenceclient/osc/v1/nodes.py":[{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"a6058a71af4ceadfa5b186f29678bb0d193101f6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":46,"context_line":"            help\u003d(\u0027Name for the Node\u0027))"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--flavor_id\u0027,"},{"line_number":49,"context_line":"            metavar\u003d\u0027\u003cflavor_id\u003e\u0027,"},{"line_number":50,"context_line":"            help\u003d(\u0027Uuid of flavor to attach to node\u0027))"},{"line_number":51,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_da02cb3e","line":48,"range":{"start_line":48,"start_character":11,"end_line":48,"end_character":26},"updated":"2017-09-04 05:19:08.000000000","message":"compose node allows composing via properties also, which is missing here?","commit_id":"f7f1e603e2f136a613cf90d7574fde12353a5f81"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"a6058a71af4ceadfa5b186f29678bb0d193101f6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        parser \u003d super(ShowNode, self).get_parser(prog_name)"},{"line_number":77,"context_line":"        parser.add_argument("},{"line_number":78,"context_line":"            \u0027id\u0027,"},{"line_number":79,"context_line":"            metavar\u003d\u0027\u003cid\u003e\u0027,"},{"line_number":80,"context_line":"            help\u003d(\u0027Uuid of node to display\u0027))"},{"line_number":81,"context_line":"        return parser"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_faa2274b","line":79,"range":{"start_line":79,"start_character":21,"end_line":79,"end_character":26},"updated":"2017-09-04 05:19:08.000000000","message":"can we keep as node_id?","commit_id":"f7f1e603e2f136a613cf90d7574fde12353a5f81"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"a6058a71af4ceadfa5b186f29678bb0d193101f6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":109,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":110,"context_line":"        count \u003d 0"},{"line_number":111,"context_line":"        for p in parsed_args.id:"},{"line_number":112,"context_line":"            try:"},{"line_number":113,"context_line":"                client.delete_node(p)"},{"line_number":114,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_fabb476f","line":111,"range":{"start_line":111,"start_character":11,"end_line":111,"end_character":13},"updated":"2017-09-04 05:19:08.000000000","message":":nit: for node_id in","commit_id":"f7f1e603e2f136a613cf90d7574fde12353a5f81"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":32,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":33,"context_line":"        obj \u003d client.list_nodes()"},{"line_number":34,"context_line":"        columns \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027links\u0027, \u0027index\u0027)"},{"line_number":35,"context_line":"        return (columns, (utils.get_dict_properties(s, columns) for s in obj))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_dbb73586","line":34,"updated":"2017-09-06 08:51:54.000000000","message":"update \u0027links\u0027 to \u0027uri\u0027","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def take_action(self, parsed_args):"},{"line_number":77,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":78,"context_line":"        req \u003d {}"},{"line_number":79,"context_line":"        if parsed_args.name:"},{"line_number":80,"context_line":"            req[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":81,"context_line":"        if parsed_args.podm_id:"},{"line_number":82,"context_line":"            req[\u0027podm_id\u0027] \u003d parsed_args.podm_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_7b7161de","line":79,"updated":"2017-09-06 08:51:54.000000000","message":"name is required attribute, no need of if condition here?","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            req[\u0027podm_id\u0027] \u003d parsed_args.podm_id"},{"line_number":83,"context_line":"        if parsed_args.flavor_id:"},{"line_number":84,"context_line":"            req[\u0027flavor_id\u0027] \u003d parsed_args.flavor_id"},{"line_number":85,"context_line":"        elif parsed_args.storage or parsed_args.processor \\"},{"line_number":86,"context_line":"                or parsed_args.memory:"},{"line_number":87,"context_line":"            properties \u003d {}"},{"line_number":88,"context_line":"            if parsed_args.processor:"},{"line_number":89,"context_line":"                properties[\u0027processor\u0027] \u003d parsed_args.processor"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_5b590558","line":86,"range":{"start_line":85,"start_character":8,"end_line":86,"end_character":38},"updated":"2017-09-06 08:51:54.000000000","message":"directly check for else","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":97,"context_line":"        obj \u003d client.compose_node(req)"},{"line_number":98,"context_line":"        columns \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027links\u0027, \u0027index\u0027)"},{"line_number":99,"context_line":"        return (columns, (utils.get_dict_properties(obj, columns)))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_fb331112","line":98,"updated":"2017-09-06 08:51:54.000000000","message":"update links to uri","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        parser.add_argument("},{"line_number":161,"context_line":"            \u0027node_index\u0027,"},{"line_number":162,"context_line":"            metavar\u003d\u0027\u003cnode_index\u003e\u0027,"},{"line_number":163,"context_line":"            help\u003d(\u0027Index of node to be manged\u0027))"},{"line_number":164,"context_line":"        parser.add_argument("},{"line_number":165,"context_line":"            \u0027podm_id\u0027,"},{"line_number":166,"context_line":"            metavar\u003d\u0027\u003cpodm_id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_1b1a5d7c","line":163,"range":{"start_line":163,"start_character":39,"end_line":163,"end_character":45},"updated":"2017-09-06 08:51:54.000000000","message":":nit: managed","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":178,"context_line":"        obj \u003d client.manage_node(req)"},{"line_number":179,"context_line":"        columns \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027links\u0027, \u0027index\u0027)"},{"line_number":180,"context_line":"        return (columns, (utils.get_dict_properties(obj, columns)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_5b07c51d","line":179,"range":{"start_line":179,"start_character":36,"end_line":179,"end_character":41},"updated":"2017-09-06 08:51:54.000000000","message":"change to uri","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"8052ac3fbdd79bd9d73db79d446157e9c665f2bd","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.log.debug(\"take_action(%s)\", parsed_args)"},{"line_number":32,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":33,"context_line":"        obj \u003d client.list_nodes()"},{"line_number":34,"context_line":"        columns \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027resource_uri\u0027, \u0027index\u0027)"},{"line_number":35,"context_line":"        return (columns, (utils.get_dict_properties(s, columns) for s in obj))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_c8ca9c4c","line":34,"range":{"start_line":34,"start_character":26,"end_line":34,"end_character":54},"updated":"2017-09-15 09:44:48.000000000","message":"podm_id?","commit_id":"345804c8a32e6d08d206c1d64531a02066d0ad30"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"8052ac3fbdd79bd9d73db79d446157e9c665f2bd","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":89,"context_line":"        obj \u003d client.compose_node(req)"},{"line_number":90,"context_line":"        columns \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027resource_uri\u0027, \u0027index\u0027)"},{"line_number":91,"context_line":"        return (columns, (utils.get_dict_properties(obj, columns)))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_88c0142c","line":90,"range":{"start_line":90,"start_character":33,"end_line":90,"end_character":55},"updated":"2017-09-15 09:44:48.000000000","message":"podm_id?","commit_id":"345804c8a32e6d08d206c1d64531a02066d0ad30"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"8052ac3fbdd79bd9d73db79d446157e9c665f2bd","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        client \u003d self.app.client_manager.valence"},{"line_number":170,"context_line":"        obj \u003d client.manage_node(req)"},{"line_number":171,"context_line":"        columns \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027resource_uri\u0027, \u0027index\u0027)"},{"line_number":172,"context_line":"        return (columns, (utils.get_dict_properties(obj, columns)))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_28e5a0dc","line":171,"range":{"start_line":171,"start_character":29,"end_line":171,"end_character":48},"updated":"2017-09-15 09:44:48.000000000","message":"podm_id","commit_id":"345804c8a32e6d08d206c1d64531a02066d0ad30"}],"valenceclient/tests/unit/osc/test_node.py":[{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"a6058a71af4ceadfa5b186f29678bb0d193101f6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from valenceclient.tests.unit.osc import test_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestCreateNode(test_base.TestValenceClient):"},{"line_number":22,"context_line":"    def test_create_node(self):"},{"line_number":23,"context_line":"        response \u003d {\"index\": \"xxxxxx\","},{"line_number":24,"context_line":"                    \"links\": ["}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_5a4b7b86","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":20},"updated":"2017-09-04 05:19:08.000000000","message":"compose node","commit_id":"f7f1e603e2f136a613cf90d7574fde12353a5f81"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"89e795f8bba53655cbed193a19b5b24f17f22927","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        parsed_args \u003d self.check_parser(cmd, arglist, verifylist)"},{"line_number":101,"context_line":"        result \u003d cmd.take_action(parsed_args)"},{"line_number":102,"context_line":"        mocker.assert_called_with(\u0027test-id\u0027)"},{"line_number":103,"context_line":"        self.assertIsNone(result)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_5e1c5369","line":103,"updated":"2017-09-06 08:51:54.000000000","message":"manage node test is missing","commit_id":"4f9c2a6efcebd861b32fe3b0dae896484c92c7a7"},{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"8052ac3fbdd79bd9d73db79d446157e9c665f2bd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from valenceclient.tests.unit.osc import test_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestComposeNode(test_base.TestValenceClient):"},{"line_number":22,"context_line":"    def test_compose_node(self):"},{"line_number":23,"context_line":"        response \u003d {\"index\": \"xxxxxx\","},{"line_number":24,"context_line":"                    \"resource_uri\": \"http://localhost\","}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_88d5b4e7","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":21},"updated":"2017-09-15 09:44:48.000000000","message":"ListNodes test case missing?","commit_id":"345804c8a32e6d08d206c1d64531a02066d0ad30"}],"valenceclient/v1/client.py":[{"author":{"_account_id":11278,"name":"Anusha Ramineni","email":"anusha.ramineni@india.nec.com","username":"anusha08"},"change_message_id":"8052ac3fbdd79bd9d73db79d446157e9c665f2bd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                                   **request)"},{"line_number":57,"context_line":"        return body"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def list_node_by_id(self, id):"},{"line_number":60,"context_line":"        resp, body \u003d self.http_client.json_request(\u0027get\u0027,"},{"line_number":61,"context_line":"                                                   self.node_path % id)"},{"line_number":62,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_28fec06a","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":21},"updated":"2017-09-15 09:44:48.000000000","message":"show_node for consistency?","commit_id":"345804c8a32e6d08d206c1d64531a02066d0ad30"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"a4cd9ab9eac2467bd2e27597ef463e6669a513cc","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    podmanager_path \u003d \"/v1/pod_managers/%s\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    nodes \u003d \"/v1/nodes\""},{"line_number":25,"context_line":"    node_path \u003d \"/v1/nodes/%s\""},{"line_number":26,"context_line":"    node_manage_path \u003d \"/v1/nodes/manage\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf57530f_e4329ea7","line":25,"updated":"2017-09-20 17:11:07.000000000","message":"There is no need to keep this variable here. I suggest to use following way to generate node related uri.\n\nnode_path \u003d \"/v1/nodes\"\nuri \u003d os.path.join(node_path, \u003cid\u003e)","commit_id":"e483e4a62b2219f7f7cabab8957a1f8692ede0e9"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"a4cd9ab9eac2467bd2e27597ef463e6669a513cc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        resp, body \u003d self.http_client.json_request(\u0027get\u0027,"},{"line_number":47,"context_line":"                                                   self.podmanager_path % id)"},{"line_number":48,"context_line":"        return body"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def list_nodes(self):"},{"line_number":51,"context_line":"        resp, body \u003d self.http_client.json_request(\u0027get\u0027, self.nodes)"},{"line_number":52,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf57530f_c4dc3a48","line":49,"updated":"2017-09-20 17:11:07.000000000","message":"I suggest to split each group of functions, like node and podmanager, into separate files. In this client module, import those files as manager of each group. Use ironicclient as example, https://github.com/openstack/python-ironicclient/blob/master/ironicclient/v1/client.py#L65 https://github.com/openstack/python-ironicclient/blob/master/ironicclient/v1/node.py\nThis file will become very long and complicated if we keep all functions here.","commit_id":"e483e4a62b2219f7f7cabab8957a1f8692ede0e9"}]}
