)]}'
{"nova/api/openstack/compute/helpers.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"5a298d8f2e090c8c40ebb98a987d2f2f8f25d093","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    why it\u0027s important to only set operation_kwargs if there is"},{"line_number":75,"context_line":"    something to set. Input validation will ensure that we are only"},{"line_number":76,"context_line":"    operating on appropriate attributes for each operation."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    \"\"\""},{"line_number":79,"context_line":"    # Disk config"},{"line_number":80,"context_line":"    auto_disk_config_raw \u003d server_dict.pop(API_DISK_CONFIG, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_37d4c11e","line":77,"updated":"2016-06-23 13:21:33.000000000","message":"Micro-nit: unrelated whitespace change","commit_id":"f29bd190889d5d7233424080e284bd35596bb43c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1cda595a8174bfb6544f945a60d6438b469161a0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    # This is only ever expected during rebuild operations, and only"},{"line_number":91,"context_line":"    # does anything with Ironic driver. It also demonstrates the lack"},{"line_number":92,"context_line":"    # of understanding of the word ephemeral."},{"line_number":93,"context_line":"    if \u0027preserve_ephemeral\u0027 in server_dict and op \u003d\u003d \u0027rebuild\u0027:"},{"line_number":94,"context_line":"        operation_kwargs[\u0027preserve_ephemeral\u0027] \u003d strutils.bool_from_string("},{"line_number":95,"context_line":"                server_dict[\u0027preserve_ephemeral\u0027], strict\u003dTrue)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_df8bcf66","line":93,"updated":"2016-06-23 14:45:04.000000000","message":"ah, so that makes me happy with the previous patch, possibly...","commit_id":"f29bd190889d5d7233424080e284bd35596bb43c"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"5a298d8f2e090c8c40ebb98a987d2f2f8f25d093","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                server_dict[\u0027preserve_ephemeral\u0027], strict\u003dTrue)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    # yes, we use different kwargs, this goes all the way back to"},{"line_number":98,"context_line":"    # commit cebc98176926f57016a508d5c59b11f55dfcf2b3."},{"line_number":99,"context_line":"    if \u0027personality\u0027 in server_dict:"},{"line_number":100,"context_line":"        if op \u003d\u003d \u0027create\u0027:"},{"line_number":101,"context_line":"            operation_kwargs[\u0027injected_files\u0027] \u003d get_injected_files("}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_37a201af","line":98,"updated":"2016-06-23 13:21:33.000000000","message":"Thanks for that explanation - it helps to understand why the code is doing what it\u0027s doing.","commit_id":"f29bd190889d5d7233424080e284bd35596bb43c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2a47f831348d5eca51ab19c823c4406d6ea96299","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    # yes, we use different kwargs, this goes all the way back to"},{"line_number":99,"context_line":"    # commit cebc98176926f57016a508d5c59b11f55dfcf2b3."},{"line_number":100,"context_line":"    if \u0027personality\u0027 in server_dict:"},{"line_number":101,"context_line":"        if op \u003d\u003d \u0027create\u0027:"},{"line_number":102,"context_line":"            operation_kwargs[\u0027injected_files\u0027] \u003d get_injected_files("},{"line_number":103,"context_line":"                server_dict.pop(\u0027personality\u0027))"},{"line_number":104,"context_line":"        elif op \u003d\u003d \u0027rebuild\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_49f2499b","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":26},"updated":"2016-06-24 17:54:11.000000000","message":"Maybe we should define a constant or enum for these?","commit_id":"12321c8cd739e81b99c5374c2f1d14c938f4cf14"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"81055f5601aab1d01218f1d92e0606efe00e7acd","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    # This is only ever expected during rebuild operations, and only"},{"line_number":97,"context_line":"    # does anything with Ironic driver. It also demonstrates the lack"},{"line_number":98,"context_line":"    # of understanding of the word ephemeral."},{"line_number":99,"context_line":"    if \u0027preserve_ephemeral\u0027 in server_dict and op \u003d\u003d REBUILD:"},{"line_number":100,"context_line":"        preserve \u003d strutils.bool_from_string("},{"line_number":101,"context_line":"            server_dict.pop(\u0027preserve_ephemeral\u0027), strict\u003dTrue)"},{"line_number":102,"context_line":"        operation_kwargs[\u0027preserve_ephemeral\u0027] \u003d preserve"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_f12317bb","line":99,"range":{"start_line":99,"start_character":42,"end_line":99,"end_character":60},"updated":"2016-06-24 18:53:24.000000000","message":"We shouldn\u0027t need to check this right? Plus it\u0027s kind of out of place in this change.","commit_id":"76b58b8f895bb9b8afedeed6f01a6117f9194379"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"81055f5601aab1d01218f1d92e0606efe00e7acd","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    # function if injected files is not defined as a list. Once hooks"},{"line_number":112,"context_line":"    # are removed, this should go back inside the personality"},{"line_number":113,"context_line":"    # conditional above."},{"line_number":114,"context_line":"    if op \u003d\u003d CREATE:"},{"line_number":115,"context_line":"        operation_kwargs[\u0027injected_files\u0027] \u003d get_injected_files("},{"line_number":116,"context_line":"            server_dict.pop(\u0027personality\u0027, []))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_f43825d5","line":114,"range":{"start_line":114,"start_character":4,"end_line":114,"end_character":6},"updated":"2016-06-24 18:53:24.000000000","message":"nit: I\u0027d probably make this an elif so it\u0027s more tied into the check above.","commit_id":"76b58b8f895bb9b8afedeed6f01a6117f9194379"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2a47f831348d5eca51ab19c823c4406d6ea96299","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        availability_zone \u003d create_kwargs.pop(\"availability_zone\", None)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        helpers.translate_attributes(\u0027create\u0027, server_dict, create_kwargs)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        target \u003d {"},{"line_number":497,"context_line":"            \u0027project_id\u0027: context.project_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_696905f9","line":494,"range":{"start_line":494,"start_character":37,"end_line":494,"end_character":45},"updated":"2016-06-24 17:54:11.000000000","message":"I\u0027d prefer to see some enum/constants for these.","commit_id":"12321c8cd739e81b99c5374c2f1d14c938f4cf14"}],"nova/tests/unit/api/openstack/compute/test_serversV21.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2a47f831348d5eca51ab19c823c4406d6ea96299","unresolved":false,"context_lines":[{"line_number":3369,"context_line":"        del self.body[\u0027server\u0027][\u0027personality\u0027]"},{"line_number":3370,"context_line":""},{"line_number":3371,"context_line":"        def create(*args, **kwargs):"},{"line_number":3372,"context_line":"            self.assertEqual([], kwargs[\u0027injected_files\u0027])"},{"line_number":3373,"context_line":"            return old_create(*args, **kwargs)"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"        self.stub_out(\u0027nova.compute.api.API.create\u0027, create)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_1b17e448","side":"PARENT","line":3372,"updated":"2016-06-24 17:54:11.000000000","message":"Doesn\u0027t this break some hook API? Remember that thing?","commit_id":"2e4c8ee7a98ba3554f98cddd822865a7bac37253"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d38f24cbc632eaf6de61394f3a4237202c3355ca","unresolved":false,"context_lines":[{"line_number":3369,"context_line":"        del self.body[\u0027server\u0027][\u0027personality\u0027]"},{"line_number":3370,"context_line":""},{"line_number":3371,"context_line":"        def create(*args, **kwargs):"},{"line_number":3372,"context_line":"            self.assertEqual([], kwargs[\u0027injected_files\u0027])"},{"line_number":3373,"context_line":"            return old_create(*args, **kwargs)"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"        self.stub_out(\u0027nova.compute.api.API.create\u0027, create)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_1beb64e0","side":"PARENT","line":3372,"in_reply_to":"3aaa91ec_1b17e448","updated":"2016-06-24 17:56:43.000000000","message":"Yeah: be4220b37df42d4f99b5f5b8c18245a315228a8a","commit_id":"2e4c8ee7a98ba3554f98cddd822865a7bac37253"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c3a6f969486a072bf1a220f4df8d21dfb0d1718b","unresolved":false,"context_lines":[{"line_number":3369,"context_line":"        del self.body[\u0027server\u0027][\u0027personality\u0027]"},{"line_number":3370,"context_line":""},{"line_number":3371,"context_line":"        def create(*args, **kwargs):"},{"line_number":3372,"context_line":"            self.assertEqual([], kwargs[\u0027injected_files\u0027])"},{"line_number":3373,"context_line":"            return old_create(*args, **kwargs)"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"        self.stub_out(\u0027nova.compute.api.API.create\u0027, create)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_1bfc046f","side":"PARENT","line":3372,"in_reply_to":"3aaa91ec_1beb64e0","updated":"2016-06-24 18:01:21.000000000","message":"Hooks were deprecated in mitaka:\n\nhttps://review.openstack.org/#/c/286276/\n\nWe didn\u0027t say when we\u0027d remove them though.","commit_id":"2e4c8ee7a98ba3554f98cddd822865a7bac37253"}]}
