)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3bb93f383bd0a2a1661b28ecf29e85cf70dd6d2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"full use of Cinder\u0027s FibreChannel zone manager."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"DocImpact"},{"line_number":16,"context_line":"Implements BP: add-fibre-channel-support-to-netapp-eseries"},{"line_number":17,"context_line":"Co-Authored-By: Alex Meade \u003cmr.alex.meade@gmail.com\u003e"},{"line_number":18,"context_line":"Co-Authored-By: Yogesh Kshirsagar \u003cykshirsa@netapp.com\u003e"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3afb71cf_480d3136","line":16,"updated":"2015-06-08 21:27:37.000000000","message":"This blueprint link does not work.  I think you need to add \"bp \" or \"blueprint \" right before add-fibre-channel-support-to-netapp-eseries.","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"}],"cinder/tests/unit/volume/drivers/netapp/eseries/test_fc_driver.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"507a825cf56e0b5e646b53c8f514b0f844bb24fa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Alex Meade.  All rights reserved."},{"line_number":2,"context_line":"# Copyright (c) 2015 Yogesh Kshirsagar. All rights reserved."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_c42b85ea","line":1,"updated":"2015-06-06 12:31:09.000000000","message":"The copyrights are inconsistent throughout the NetApp code.  The last sentence \"All rights reserved\" is a duplicate because L3 already has it.  In other files, there is a \"All rights reserved\" at the end of each person\u0027s name.  Could you ad least pick one style and be consistent?","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"}],"cinder/tests/unit/volume/drivers/netapp/eseries/test_library.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"507a825cf56e0b5e646b53c8f514b0f844bb24fa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Andrew Kerr.  All rights reserved."},{"line_number":2,"context_line":"# Copyright (c) 2015 Alex Meade.  All rights reserved."},{"line_number":3,"context_line":"# Copyright (c) 2015 Rushil Chugh.  All rights reserved."},{"line_number":4,"context_line":"# Copyright (c) 2015 Yogesh Kshirsagar.  All Rights Reserved."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_643a9138","line":4,"updated":"2015-06-06 12:31:09.000000000","message":"Ditto","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3bb93f383bd0a2a1661b28ecf29e85cf70dd6d2","unresolved":false,"context_lines":[{"line_number":598,"context_line":"            self):"},{"line_number":599,"context_line":"        connector \u003d {\u0027wwpns\u0027: [eseries_fake.WWPN, eseries_fake.WWPN_2]}"},{"line_number":600,"context_line":"        self.library.lookup_service \u003d mock.Mock()"},{"line_number":601,"context_line":"        self.library.lookup_service.get_device_mapping_from_network \u003d \\"},{"line_number":602,"context_line":"            mock.Mock(return_value\u003deseries_fake.FC_FABRIC_MAP)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"        (target_wwpns, initiator_target_map, num_paths) \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_8599d221","line":601,"updated":"2015-06-08 21:27:37.000000000","message":"Please use () instead of \\.","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3bb93f383bd0a2a1661b28ecf29e85cf70dd6d2","unresolved":false,"context_lines":[{"line_number":601,"context_line":"        self.library.lookup_service.get_device_mapping_from_network \u003d \\"},{"line_number":602,"context_line":"            mock.Mock(return_value\u003deseries_fake.FC_FABRIC_MAP)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"        (target_wwpns, initiator_target_map, num_paths) \u003d \\"},{"line_number":605,"context_line":"            self.library._build_initiator_target_map_fc(connector)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        self.assertSetEqual(set(eseries_fake.FC_TARGET_WWPNS),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_058602b9","line":604,"updated":"2015-06-08 21:27:37.000000000","message":"Same","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"}],"cinder/volume/drivers/netapp/eseries/client.py":[{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"f3185ba1cd0be598df0dc0f60d2f68dc5b5a5b77","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        path \u003d \"/storage-systems/{system-id}/hardware-inventory\""},{"line_number":245,"context_line":"        return self._invoke(\u0027GET\u0027, path)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def list_target_wwpns(self):"},{"line_number":248,"context_line":"        inventory \u003d self.list_hardware_inventory()"},{"line_number":249,"context_line":"        fc_ports \u003d inventory.get(\"fibrePorts\", [])"},{"line_number":250,"context_line":"        wwpns \u003d [port[\u0027portName\u0027] for port in fc_ports]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_d59c4d6b","line":247,"updated":"2015-06-06 21:04:56.000000000","message":"Method functionality comment is missing.","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"}],"cinder/volume/drivers/netapp/eseries/fc_driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"874a73e62f438498bfe4ad319eb6b85c11b33431","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":40,"context_line":"        super(NetAppEseriesFibreChannelDriver, self).__init__(*args, **kwargs)"},{"line_number":41,"context_line":"        na_utils.validate_instantiation(**kwargs)"},{"line_number":42,"context_line":"        self.library \u003d library.NetAppESeriesLibrary(self.DRIVER_NAME,"},{"line_number":43,"context_line":"                                                    \u0027FC\u0027, **kwargs)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_8b368a50","line":42,"updated":"2015-06-08 19:29:14.000000000","message":"Could we add library.NetAppESeriesLibrary as a base class? It will make a code of this class more cleaner","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"93e0eb239bfbdfcbc83d4cb88f1e0ccf5a8abf73","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":40,"context_line":"        super(NetAppEseriesFibreChannelDriver, self).__init__(*args, **kwargs)"},{"line_number":41,"context_line":"        na_utils.validate_instantiation(**kwargs)"},{"line_number":42,"context_line":"        self.library \u003d library.NetAppESeriesLibrary(self.DRIVER_NAME,"},{"line_number":43,"context_line":"                                                    \u0027FC\u0027, **kwargs)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_7b2407c4","line":42,"in_reply_to":"3afb71cf_8b368a50","updated":"2015-06-09 18:18:28.000000000","message":"I think that may work but I\u0027m following the conventions of a few other vendors as well as the other NetApp drivers. I\u0027m not sure it plays nicely with the ABC stuff either.","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"}],"cinder/volume/drivers/netapp/eseries/library.py":[{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"f3185ba1cd0be598df0dc0f60d2f68dc5b5a5b77","unresolved":false,"context_lines":[{"line_number":540,"context_line":"    def initialize_connection_fc(self, volume, connector):"},{"line_number":541,"context_line":"        \"\"\"Initializes the connection and returns connection info."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        Assign any created volume to a compute node/host so that it can be"},{"line_number":544,"context_line":"        used from that host."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        The driver returns a driver_volume_type of \u0027fibre_channel\u0027."}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_b588b123","line":543,"updated":"2015-06-06 21:04:56.000000000","message":"Assign[s] any created volume ..","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"874a73e62f438498bfe4ad319eb6b85c11b33431","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                \u0027data\u0027: {"},{"line_number":553,"context_line":"                    \u0027target_discovered\u0027: True,"},{"line_number":554,"context_line":"                    \u0027target_lun\u0027: 1,"},{"line_number":555,"context_line":"                    \u0027target_wwn\u0027: \u0027500a098280feeba5\u0027,"},{"line_number":556,"context_line":"                    \u0027access_mode\u0027: \u0027rw\u0027,"},{"line_number":557,"context_line":"                    \u0027initiator_target_map\u0027: {"},{"line_number":558,"context_line":"                        \u002721000024ff406cc3\u0027: [\u0027500a098280feeba5\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_0b505a5c","line":555,"updated":"2015-06-08 19:29:14.000000000","message":"Should be:\n\u0027target_wwn\u0027: [\u0027500a098280feeba5\u0027],","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"93e0eb239bfbdfcbc83d4cb88f1e0ccf5a8abf73","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                \u0027data\u0027: {"},{"line_number":553,"context_line":"                    \u0027target_discovered\u0027: True,"},{"line_number":554,"context_line":"                    \u0027target_lun\u0027: 1,"},{"line_number":555,"context_line":"                    \u0027target_wwn\u0027: \u0027500a098280feeba5\u0027,"},{"line_number":556,"context_line":"                    \u0027access_mode\u0027: \u0027rw\u0027,"},{"line_number":557,"context_line":"                    \u0027initiator_target_map\u0027: {"},{"line_number":558,"context_line":"                        \u002721000024ff406cc3\u0027: [\u0027500a098280feeba5\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_3b9a0f6f","line":555,"in_reply_to":"3afb71cf_0b505a5c","updated":"2015-06-09 18:18:28.000000000","message":"it works either way actually.","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"507a825cf56e0b5e646b53c8f514b0f844bb24fa","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        target_wwpns, initiator_target_map, num_paths \u003d initiator_info"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        if target_wwpns:"},{"line_number":596,"context_line":"            msg \u003d _(\"Successfully fetched target details for LUN %(id)s \""},{"line_number":597,"context_line":"                    \"and initiator(s) %(initiators)s.\")"},{"line_number":598,"context_line":"            msg_fmt \u003d {\u0027id\u0027: volume[\u0027id\u0027], \u0027initiators\u0027: initiators}"},{"line_number":599,"context_line":"            LOG.debug(msg, msg_fmt)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_840c6d95","line":596,"updated":"2015-06-06 12:31:09.000000000","message":"Debug loge do not have to be translated.","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3bb93f383bd0a2a1661b28ecf29e85cf70dd6d2","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        target_wwpns, initiator_target_map, num_paths \u003d initiator_info"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        if target_wwpns:"},{"line_number":596,"context_line":"            msg \u003d _(\"Successfully fetched target details for LUN %(id)s \""},{"line_number":597,"context_line":"                    \"and initiator(s) %(initiators)s.\")"},{"line_number":598,"context_line":"            msg_fmt \u003d {\u0027id\u0027: volume[\u0027id\u0027], \u0027initiators\u0027: initiators}"},{"line_number":599,"context_line":"            LOG.debug(msg, msg_fmt)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_f6ff2ca8","line":596,"in_reply_to":"3afb71cf_840c6d95","updated":"2015-06-08 21:27:37.000000000","message":"+1","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c3bb93f383bd0a2a1661b28ecf29e85cf70dd6d2","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        init_targ_map \u003d {}"},{"line_number":667,"context_line":"        num_paths \u003d 0"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"        if self.lookup_service is not None:"},{"line_number":670,"context_line":"            # Use FC SAN lookup to determine which ports are visible."},{"line_number":671,"context_line":"            dev_map \u003d self.lookup_service.get_device_mapping_from_network("},{"line_number":672,"context_line":"                connector[\u0027wwpns\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_428750d7","line":669,"updated":"2015-06-08 21:27:37.000000000","message":"if not self.lookup_service:","commit_id":"66570bb4c1747daa72a23ac2c937bad86943d00b"}],"test-requirements.txt":[{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"d0fd445da6f4d73f70885e565e318896934cab67","unresolved":false,"context_lines":[{"line_number":6,"context_line":"hacking\u003c0.11,\u003e\u003d0.10.0"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"coverage\u003e\u003d3.6"},{"line_number":9,"context_line":"ddt\u003e\u003d1.0.0"},{"line_number":10,"context_line":"discover"},{"line_number":11,"context_line":"fixtures\u003e\u003d0.3.14"},{"line_number":12,"context_line":"mock\u003e\u003d1.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3afb71cf_ccc4ea93","line":9,"updated":"2015-06-05 12:50:38.000000000","message":"Need to change this to\n\n ddt\u003e\u003d0.7.0","commit_id":"31b6fcbce51a501eceb983f3eb2f5fe14e2806e6"}]}
