)]}'
{"proliantutils/hpssa/manager.py":[{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"def delete_configuration():"},{"line_number":166,"context_line":"    \"\"\"Delete a RAID configuration on this server."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    :returns: the current RAID configuration after deleting all"},{"line_number":169,"context_line":"        the logical disks."},{"line_number":170,"context_line":"    \"\"\""},{"line_number":171,"context_line":"    server \u003d objects.Server()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8dc226e8","line":168,"updated":"2015-07-08 06:40:51.000000000","message":"does it mean it recreates/reconfigure the RAID after deleting all logical disks and return that? I dont undertsand the meaning of current RAID when logical disks are already deleted.","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"def delete_configuration():"},{"line_number":166,"context_line":"    \"\"\"Delete a RAID configuration on this server."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    :returns: the current RAID configuration after deleting all"},{"line_number":169,"context_line":"        the logical disks."},{"line_number":170,"context_line":"    \"\"\""},{"line_number":171,"context_line":"    server \u003d objects.Server()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_70ef7587","line":168,"in_reply_to":"ba3cc151_8dc226e8","updated":"2015-07-08 07:08:13.000000000","message":"Current RAID configuration contains both logical_disks and physical_disks.  When logical_disks are deleted, we can check the status of physical disks.  The values returned will be like below - no logical disks but will return value of physical disks:\n\n  {\n        \"logical_disks\": [ ],\n        \"physical_disks\": [\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPDB\",\n                \"id\": \"6I:1:7\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FATFF\",\n                \"size_gb\": 600,\n                \"status\": \"ready\"\n            },\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPDB\",\n                \"id\": \"6I:1:6\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FATFF\",\n                \"size_gb\": 600,\n                \"status\": \"ready\"\n            },\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPD6\",\n                \"id\": \"5I:1:3\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FARNA\",\n                \"size_gb\": 600,\n                \"status\": \"active\"\n            },\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPDB\",\n                \"id\": \"6I:1:5\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FATFF\",\n                \"size_gb\": 600,\n                \"status\": \"active\"\n            },\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPD6\",\n                \"id\": \"5I:1:4\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FARNA\",\n                \"size_gb\": 600,\n                \"status\": \"active\"\n            },\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPD6\",\n                \"id\": \"5I:1:1\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FARNA\",\n                \"size_gb\": 600,\n                \"status\": \"active\"\n            },\n            {\n                \"controller\": \"Smart Array P822 in Slot 3\",\n                \"disk_type\": \"hdd\",\n                \"firmware\": \"HPD6\",\n                \"id\": \"5I:1:2\",\n                \"interface_type\": \"sas\",\n                \"model\": \"HP      EF0600FARNA\",\n                \"size_gb\": 600,\n                \"status\": \"active\"\n            }\n        ]\n  }","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"}],"proliantutils/ipa_hw_manager/hardware_manager.py":[{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def evaluate_hardware_support(cls):"},{"line_number":29,"context_line":"        return hardware.HardwareSupport.SERVICE_PROVIDER"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def erase_block_device(self, block_device):"},{"line_number":32,"context_line":"        npass \u003d 3"},{"line_number":33,"context_line":"        cmd \u003d (\u0027shred\u0027, \u0027--force\u0027, \u0027--zero\u0027, \u0027--verbose\u0027,"},{"line_number":34,"context_line":"               \u0027--iterations\u0027, npass, block_device.name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_2d419a63","side":"PARENT","line":31,"updated":"2015-07-08 06:40:51.000000000","message":"these functions are for inband disk erase only, correct?\n\nDont we need them for backward compatibility? I just want to make sure that we dont break any existing customers with this removal.","commit_id":"6396b5170e57c4e3cdabb5bc92e802719f8f0165"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def evaluate_hardware_support(cls):"},{"line_number":29,"context_line":"        return hardware.HardwareSupport.SERVICE_PROVIDER"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def erase_block_device(self, block_device):"},{"line_number":32,"context_line":"        npass \u003d 3"},{"line_number":33,"context_line":"        cmd \u003d (\u0027shred\u0027, \u0027--force\u0027, \u0027--zero\u0027, \u0027--verbose\u0027,"},{"line_number":34,"context_line":"               \u0027--iterations\u0027, npass, block_device.name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8b276eb5","side":"PARENT","line":31,"in_reply_to":"ba3cc151_2d419a63","updated":"2015-07-08 07:08:13.000000000","message":"No, there is no backward compatibility here because no one has ever built a ramdisk with proliant hardware manager yet.  First use case if raid.  And there is same implementation of it in generic hardware manager. \n\nhttps://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/hardware.py#L449-L467\n\nSo we don\u0027t need it anymore.","commit_id":"6396b5170e57c4e3cdabb5bc92e802719f8f0165"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ProliantHardwareManager(hardware.GenericHardwareManager):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    HARDWARE_MANAGER_VERSION \u003d \"3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":25,"context_line":"        return [{\u0027step\u0027: \u0027create_configuration\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_f014e544","line":22,"updated":"2015-07-08 06:40:51.000000000","message":"this is not related to the patch, but still asking why the version is 3? Doesnt it require to be increased in this patch...?","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ProliantHardwareManager(hardware.GenericHardwareManager):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    HARDWARE_MANAGER_VERSION \u003d \"3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":25,"context_line":"        return [{\u0027step\u0027: \u0027create_configuration\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_5014b14b","line":22,"in_reply_to":"ba3cc151_f014e544","updated":"2015-07-08 07:08:13.000000000","message":"I think there is something wrong here. If it was version, we should have put it 1.0.  I think what Anusha meant earlier was to specify hardware support \n\nhttps://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/hardware.py#L239-L240\n\nWe need to implement that method. I will correct it in another patch.  Good catch. :)","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    HARDWARE_MANAGER_VERSION \u003d \"3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":25,"context_line":"        return [{\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":26,"context_line":"                 \u0027interface\u0027: \u0027raid\u0027,"},{"line_number":27,"context_line":"                 \u0027priority\u0027: 0},"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8d1ea66e","line":24,"updated":"2015-07-08 06:40:51.000000000","message":"ditto","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    HARDWARE_MANAGER_VERSION \u003d \"3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":25,"context_line":"        return [{\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":26,"context_line":"                 \u0027interface\u0027: \u0027raid\u0027,"},{"line_number":27,"context_line":"                 \u0027priority\u0027: 0},"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_70bd3567","line":24,"in_reply_to":"ba3cc151_8d1ea66e","updated":"2015-07-08 07:08:13.000000000","message":"Done","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    HARDWARE_MANAGER_VERSION \u003d \"3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":25,"context_line":"        return [{\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":26,"context_line":"                 \u0027interface\u0027: \u0027raid\u0027,"},{"line_number":27,"context_line":"                 \u0027priority\u0027: 0},"},{"line_number":28,"context_line":"                {\u0027step\u0027: \u0027delete_configuration\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_6d648221","line":25,"updated":"2015-07-08 06:40:51.000000000","message":"why this change is required? why we need to get the steps here?","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    HARDWARE_MANAGER_VERSION \u003d \"3\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_clean_steps(self, node, ports):"},{"line_number":25,"context_line":"        return [{\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":26,"context_line":"                 \u0027interface\u0027: \u0027raid\u0027,"},{"line_number":27,"context_line":"                 \u0027priority\u0027: 0},"},{"line_number":28,"context_line":"                {\u0027step\u0027: \u0027delete_configuration\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_9050f933","line":25,"in_reply_to":"ba3cc151_6d648221","updated":"2015-07-08 07:08:13.000000000","message":"This is polled by ironic-python-agent to all hardware managers.\n\nhttps://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/extensions/clean.py#L32-L34","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def evaluate_hardware_support(cls):"},{"line_number":33,"context_line":"        return hardware.HardwareSupport.SERVICE_PROVIDER"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def create_configuration(self, node, ports):"},{"line_number":36,"context_line":"        target_raid_config \u003d node.get(\u0027target_raid_config\u0027, {}).copy()"},{"line_number":37,"context_line":"        return hpssa_manager.create_configuration("},{"line_number":38,"context_line":"            raid_config\u003dtarget_raid_config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_0d24d6c2","line":35,"updated":"2015-07-08 06:40:51.000000000","message":"doc string missing.","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def evaluate_hardware_support(cls):"},{"line_number":33,"context_line":"        return hardware.HardwareSupport.SERVICE_PROVIDER"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def create_configuration(self, node, ports):"},{"line_number":36,"context_line":"        target_raid_config \u003d node.get(\u0027target_raid_config\u0027, {}).copy()"},{"line_number":37,"context_line":"        return hpssa_manager.create_configuration("},{"line_number":38,"context_line":"            raid_config\u003dtarget_raid_config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_b0909dee","line":35,"in_reply_to":"ba3cc151_0d24d6c2","updated":"2015-07-08 07:08:13.000000000","message":"Done","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f8647a94806c81d24f3c432773dab4a6a0286b1b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return hpssa_manager.create_configuration("},{"line_number":38,"context_line":"            raid_config\u003dtarget_raid_config)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def delete_configuration(self, node, ports):"},{"line_number":41,"context_line":"        return hpssa_manager.delete_configuration()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_cd290e9d","line":40,"updated":"2015-07-08 06:40:51.000000000","message":"ditto","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0a959cc304e248c1212d2a6a35ff46ee73c24a5f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return hpssa_manager.create_configuration("},{"line_number":38,"context_line":"            raid_config\u003dtarget_raid_config)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def delete_configuration(self, node, ports):"},{"line_number":41,"context_line":"        return hpssa_manager.delete_configuration()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_100b892b","line":40,"in_reply_to":"ba3cc151_cd290e9d","updated":"2015-07-08 07:08:13.000000000","message":"Done","commit_id":"4d5146cf6de5765c2994fed0e73abecc697ee8db"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"ab0ef0e6a904078bb11580ead069cbbcbc901e51","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                ]"},{"line_number":68,"context_line":"            }"},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        target_raid_config \u003d node.get(\u0027target_raid_config\u0027, {}).copy()"},{"line_number":71,"context_line":"        return hpssa_manager.create_configuration("},{"line_number":72,"context_line":"            raid_config\u003dtarget_raid_config)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_2a2243ba","line":70,"updated":"2015-07-17 06:46:56.000000000","message":"Would it be useul to validate the node[\u0027target_raid_config\u0027] before being used?","commit_id":"f68f4f3113eb259a7b4cda25eab102700cd12fd0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"cead2634db21c0e28fc1f40f894561ec9e2886e0","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                ]"},{"line_number":68,"context_line":"            }"},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        target_raid_config \u003d node.get(\u0027target_raid_config\u0027, {}).copy()"},{"line_number":71,"context_line":"        return hpssa_manager.create_configuration("},{"line_number":72,"context_line":"            raid_config\u003dtarget_raid_config)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_4e37aab0","line":70,"in_reply_to":"9a41bdd9_2a2243ba","updated":"2015-07-20 10:01:12.000000000","message":"validate() is called as the first step of create_configuration - https://github.com/stackforge/proliantutils/blob/master/proliantutils/hpssa/manager.py#L93. It will raise if the configuration is not proper.","commit_id":"f68f4f3113eb259a7b4cda25eab102700cd12fd0"}],"proliantutils/tests/hpssa/test_manager.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"ab0ef0e6a904078bb11580ead069cbbcbc901e51","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        get_all_details_mock.return_value \u003d raid_constants.HPSSA_NO_DRIVES"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        manager.delete_configuration()"},{"line_number":229,"context_line":"        self.assertFalse(controller_exec_cmd_mock.called)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def test_get_configuration(self, get_all_details_mock):"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_8aed8f90","line":229,"updated":"2015-07-17 06:46:56.000000000","message":"Shouldn\u0027t it call get_configuration() here as well?","commit_id":"f68f4f3113eb259a7b4cda25eab102700cd12fd0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"73f4adfd61b20ae768e9e688439e8b10d202b7f9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        get_all_details_mock.return_value \u003d raid_constants.HPSSA_NO_DRIVES"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        manager.delete_configuration()"},{"line_number":229,"context_line":"        self.assertFalse(controller_exec_cmd_mock.called)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def test_get_configuration(self, get_all_details_mock):"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f7f697f8","line":229,"in_reply_to":"3a50d1a3_ce4bba2a","updated":"2015-07-24 01:33:30.000000000","message":"Done","commit_id":"f68f4f3113eb259a7b4cda25eab102700cd12fd0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"cead2634db21c0e28fc1f40f894561ec9e2886e0","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        get_all_details_mock.return_value \u003d raid_constants.HPSSA_NO_DRIVES"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        manager.delete_configuration()"},{"line_number":229,"context_line":"        self.assertFalse(controller_exec_cmd_mock.called)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def test_get_configuration(self, get_all_details_mock):"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_ce4bba2a","line":229,"in_reply_to":"9a41bdd9_8aed8f90","updated":"2015-07-20 10:01:12.000000000","message":"We don\u0027t call get_configuration in delete() because we delete all logical disks in delete() and there we don\u0027t be any logical disks to show up.  Did you mean something else ?","commit_id":"f68f4f3113eb259a7b4cda25eab102700cd12fd0"}]}
