)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-22 14:58:50 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add volume_connector table to save connector information"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces a new \"volume_connector\" table in order to save"},{"line_number":10,"context_line":"the volume connector information of physical nodes. With this patch,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":53,"id":"7a77a97e_98e25c2e","line":7,"updated":"2016-11-22 20:51:12.000000000","message":"nit s/volume_connector/volume_connectors/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-22 14:58:50 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add volume_connector table to save connector information"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces a new \"volume_connector\" table in order to save"},{"line_number":10,"context_line":"the volume connector information of physical nodes. With this patch,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":53,"id":"5a74a57a_0fbc866b","line":7,"in_reply_to":"7a77a97e_98e25c2e","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add volume_connector table to save connector information"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces a new \"volume_connector\" table in order to save"},{"line_number":10,"context_line":"the volume connector information of physical nodes. With this patch,"},{"line_number":11,"context_line":"Ironic can put/get volume connector information to/from the database."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":53,"id":"7a77a97e_d8d2145b","line":9,"updated":"2016-11-22 20:51:12.000000000","message":"ditto","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add volume_connector table to save connector information"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces a new \"volume_connector\" table in order to save"},{"line_number":10,"context_line":"the volume connector information of physical nodes. With this patch,"},{"line_number":11,"context_line":"Ironic can put/get volume connector information to/from the database."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":53,"id":"5a74a57a_2fc142e5","line":9,"in_reply_to":"7a77a97e_d8d2145b","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"}],"ironic/common/exception.py":[{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6e3720ae74189f7312db48badb093a5a4ffe4248","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":285,"context_line":"    message \u003d _(\"volume connector %(connector)s could not be found.\")"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_14a49e05","line":285,"updated":"2015-08-20 23:35:37.000000000","message":"s/volume/A volume/","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"2280f40f7139d2ce80cde1f70cedf8e1d0003cea","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":285,"context_line":"    message \u003d _(\"volume connector %(connector)s could not be found.\")"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_d5b2a04b","line":285,"in_reply_to":"fa1b9901_14a49e05","updated":"2015-08-21 01:05:01.000000000","message":"This is aligned with other exception messages such as ChassisNotFound and ConductorNotFound etc. Do we also update other messages?","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    message \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"},{"line_number":190,"context_line":"    message \u003d _(\"A volume connector with type %(type)s and value %(value)s \""},{"line_number":191,"context_line":"                \"already exists.\")"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_d273df7e","line":189,"range":{"start_line":189,"start_character":21,"end_line":189,"end_character":39},"updated":"2016-03-17 09:15:06.000000000","message":"nit: not only ValueAreadyExists, should be TypeValueExists to avoid confusing.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    message \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"},{"line_number":190,"context_line":"    message \u003d _(\"A volume connector with type %(type)s and value %(value)s \""},{"line_number":191,"context_line":"                \"already exists.\")"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_f99461e9","line":189,"range":{"start_line":189,"start_character":21,"end_line":189,"end_character":39},"in_reply_to":"1af94dfe_d273df7e","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class VolumeConnectorAlreadyExists(Conflict):"},{"line_number":186,"context_line":"    message \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_796e7097","line":186,"range":{"start_line":186,"start_character":4,"end_line":186,"end_character":11},"updated":"2016-05-19 08:30:28.000000000","message":"it should be a ``_msg_fmt`` property and not ``message`` property.","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class VolumeConnectorAlreadyExists(Conflict):"},{"line_number":186,"context_line":"    message \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_d84277aa","line":186,"range":{"start_line":186,"start_character":4,"end_line":186,"end_character":11},"in_reply_to":"bab6814e_796e7097","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"},{"line_number":190,"context_line":"    message \u003d _(\"A volume connector with type %(type)s and value %(value)s \""},{"line_number":191,"context_line":"                \"already exists.\")"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_b968d888","line":190,"range":{"start_line":190,"start_character":4,"end_line":190,"end_character":11},"updated":"2016-05-19 08:30:28.000000000","message":"ditto above","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"},{"line_number":190,"context_line":"    message \u003d _(\"A volume connector with type %(type)s and value %(value)s \""},{"line_number":191,"context_line":"                \"already exists.\")"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_1817dfa3","line":190,"range":{"start_line":190,"start_character":4,"end_line":190,"end_character":11},"in_reply_to":"bab6814e_b968d888","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":321,"context_line":"    message \u003d _(\"A volume connector %(connector)s could not be found.\")"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_392a282d","line":321,"range":{"start_line":321,"start_character":4,"end_line":321,"end_character":11},"updated":"2016-05-19 08:30:28.000000000","message":"ditto","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":321,"context_line":"    message \u003d _(\"A volume connector %(connector)s could not be found.\")"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_780a637a","line":321,"range":{"start_line":321,"start_character":4,"end_line":321,"end_character":11},"in_reply_to":"bab6814e_392a282d","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"class VolumeConnectorAlreadyExists(Conflict):"},{"line_number":176,"context_line":"    _msg_fmt \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_1e572fcf","line":176,"range":{"start_line":176,"start_character":18,"end_line":176,"end_character":20},"updated":"2016-07-19 20:31:33.000000000","message":"Agree with Chris. A seems awkward.  For consistency.\n\nNit: /A v/V/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"class VolumeConnectorAlreadyExists(Conflict):"},{"line_number":176,"context_line":"    _msg_fmt \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_6cf75c8b","line":176,"range":{"start_line":176,"start_character":18,"end_line":176,"end_character":20},"in_reply_to":"dada55a8_1e572fcf","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"},{"line_number":180,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and value %(value)s \""},{"line_number":181,"context_line":"                 \"already exists.\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_de73d77e","line":180,"range":{"start_line":180,"start_character":18,"end_line":180,"end_character":20},"updated":"2016-07-19 20:31:33.000000000","message":"Nit: /A v/V/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"class VolumeConnectorValueAlreadyExists(Conflict):"},{"line_number":180,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and value %(value)s \""},{"line_number":181,"context_line":"                 \"already exists.\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_ccf00894","line":180,"range":{"start_line":180,"start_character":18,"end_line":180,"end_character":20},"in_reply_to":"dada55a8_de73d77e","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"adb62f16058cbcf45849bea1d9814ee0c5e8a9a1","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":311,"context_line":"    _msg_fmt \u003d _(\"A volume connector %(connector)s could not be found.\")"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7aa08908_f0781191","line":311,"range":{"start_line":311,"start_character":18,"end_line":311,"end_character":20},"updated":"2016-06-14 22:51:15.000000000","message":"NIT: use of \"A\" here seems not right to me, If another rev is pushed up please remove.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":311,"context_line":"    _msg_fmt \u003d _(\"A volume connector %(connector)s could not be found.\")"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_defab7bc","line":311,"range":{"start_line":311,"start_character":18,"end_line":311,"end_character":20},"in_reply_to":"7aa08908_f0781191","updated":"2016-07-19 20:31:33.000000000","message":"Agreed, lets keep it consistent.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class VolumeConnectorNotFound(NotFound):"},{"line_number":311,"context_line":"    _msg_fmt \u003d _(\"A volume connector %(connector)s could not be found.\")"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"class NoDriversLoaded(IronicException):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_2c01e46a","line":311,"range":{"start_line":311,"start_character":18,"end_line":311,"end_character":20},"in_reply_to":"dada55a8_defab7bc","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class VolumeConnectorAlreadyExists(Conflict):"},{"line_number":161,"context_line":"    _msg_fmt \u003d _(\"Volume connector with UUID %(uuid)s already exists.\")"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorIdAlreadyExists(Conflict):"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_3daf7ae4","line":161,"updated":"2016-11-22 20:51:12.000000000","message":"To be consistent with the other messages, s/Volume/A volume/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class VolumeConnectorAlreadyExists(Conflict):"},{"line_number":161,"context_line":"    _msg_fmt \u003d _(\"Volume connector with UUID %(uuid)s already exists.\")"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorIdAlreadyExists(Conflict):"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_2f6862f5","line":161,"in_reply_to":"7a77a97e_3daf7ae4","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    _msg_fmt \u003d _(\"Volume connector with UUID %(uuid)s already exists.\")"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorIdAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"Volume connector with type %(type)s and connector_id \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_9d5dee17","line":164,"updated":"2016-11-22 20:51:12.000000000","message":"Based on the msg below, it isn\u0027t just the connector ID, it is a connector with type \u0026 ID.\n\nHow about naming it VolumeConnectorTypeIDAlreadyExists? It is only slightly better, but it reflects both of them :)","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    _msg_fmt \u003d _(\"Volume connector with UUID %(uuid)s already exists.\")"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorIdAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"Volume connector with type %(type)s and connector_id \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_4f12fe63","line":164,"in_reply_to":"7a77a97e_9d5dee17","updated":"2016-11-23 14:38:25.000000000","message":"I have this feeling like type is semi-redundant and with the ID value someone should be able to retrieve what the type is.  tl;dr, I\u0027m not sure type actually helps....","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorIdAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"Volume connector with type %(type)s and connector_id \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_fd7b4279","line":165,"updated":"2016-11-22 20:51:12.000000000","message":"To be consistent with the other messages, s/Volume/A volume/\n\ns/connector_id/connector ID/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorIdAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"Volume connector with type %(type)s and connector_id \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_4f44be73","line":165,"in_reply_to":"7a77a97e_fd7b4279","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class InvalidUUID(Invalid):"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_ad11d1ae","line":166,"updated":"2016-11-23 15:37:44.000000000","message":"The problem is that the uniqueness of a volume connector is based on type \u0026 connector ID but both aren\u0027t always avail.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class InvalidUUID(Invalid):"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_275eb5e9","line":166,"in_reply_to":"5a74a57a_13302801","updated":"2016-11-23 19:06:30.000000000","message":"VolumeConnectorTypeAndIdAlreadyExists could work.... although that is getting excessively long.  I seem to remember in the latest rev I had to wrap one of the lines because it was well past the 80 char limit for the line.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"105d343e73567506466dff934b5fd9d57d3ef592","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class InvalidUUID(Invalid):"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_67bc2c06","line":166,"in_reply_to":"5a74a57a_47d57141","updated":"2016-11-23 19:33:59.000000000","message":"Well, the problem is that this exception is being used when updating a volume connector. In this case, the user may just change the type or just change the connector id. The volume connector will still have the non-changed type or non-changed connector id. But where the code is invoking the db update -- we don\u0027t have the volume connector info. (At least I don\u0027t think we do. See my comment at L938: https://review.openstack.org/#/c/200983/55/ironic/db/sqlalchemy/api.py","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cecd3c26d768537d6c941332ace52dedb3beea72","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class InvalidUUID(Invalid):"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_13302801","line":166,"in_reply_to":"5a74a57a_ad11d1ae","updated":"2016-11-23 16:00:43.000000000","message":"I am tempted to rename the VolumeConnectorAlreadyExists (L160) to VolumeConnectorUUIDAlreadyExists. And rename this one to VolumeConnectorAlreadyExists. WDYT?\n\nOr VolumeConnectorTypeAndIDAlreadyExists?","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class InvalidUUID(Invalid):"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_47d57141","line":166,"in_reply_to":"5a74a57a_ad11d1ae","updated":"2016-11-23 19:06:30.000000000","message":"So, both _should_ always be available, at least thinking about the data model for connection info.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"431f93d2f2344c9357381298d431d4119f9a67d4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    _msg_fmt \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":57,"id":"5a74a57a_56a8c01f","line":164,"updated":"2016-11-23 22:38:31.000000000","message":"I think you forgot to change this to VolumeConnectorTypeAndIDAlreadyExists","commit_id":"1750621f31e7feae66e0d4a295c488123f45c2c3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"358c6f87403c2f139e9fc8908724b6ce851f3e13","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    _msg_fmt \u003d _(\"A volume connector with UUID %(uuid)s already exists.\")"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class VolumeConnectorConnectorTypeAlreadyExists(Conflict):"},{"line_number":165,"context_line":"    _msg_fmt \u003d _(\"A volume connector with type %(type)s and connector ID \""},{"line_number":166,"context_line":"                 \"%(connector_id)s already exists.\")"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":57,"id":"5a74a57a_7df58fc9","line":164,"in_reply_to":"5a74a57a_56a8c01f","updated":"2016-11-24 01:46:24.000000000","message":"Done","commit_id":"1750621f31e7feae66e0d4a295c488123f45c2c3"}],"ironic/db/api.py":[{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6e3720ae74189f7312db48badb093a5a4ffe4248","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                       result set."},{"line_number":423,"context_line":"        :param sort_key: Attribute by which results should be sorted."},{"line_number":424,"context_line":"        :param sort_dir: direction in which results should be sorted."},{"line_number":425,"context_line":"                         (asc, desc)"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_d4de26dc","line":425,"updated":"2015-08-20 23:35:37.000000000","message":":returns: A list of volume connectors.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"2280f40f7139d2ce80cde1f70cedf8e1d0003cea","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                       result set."},{"line_number":423,"context_line":"        :param sort_key: Attribute by which results should be sorted."},{"line_number":424,"context_line":"        :param sort_dir: direction in which results should be sorted."},{"line_number":425,"context_line":"                         (asc, desc)"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_b5b36c4c","line":425,"in_reply_to":"fa1b9901_d4de26dc","updated":"2015-08-21 01:05:01.000000000","message":"Done","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        \"\"\""},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    @abc.abstractmethod"},{"line_number":461,"context_line":"    def create_volume_connector(self, values):"},{"line_number":462,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param values: Dict of values."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_3d9e57b9","line":461,"updated":"2015-08-21 08:09:32.000000000","message":"values make it seem like a list.  I think it\u0027s just a single volume connector info which is a dictionary. How about s/values/connector_info","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        \"\"\""},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    @abc.abstractmethod"},{"line_number":461,"context_line":"    def create_volume_connector(self, values):"},{"line_number":462,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param values: Dict of values."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_431b2881","line":461,"in_reply_to":"fa1b9901_3d9e57b9","updated":"2015-08-21 13:01:26.000000000","message":"Good point. I\u0027ll change values to connector_info.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"6e3720ae74189f7312db48badb093a5a4ffe4248","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def create_volume_connector(self, values):"},{"line_number":462,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param values: Dict of values."},{"line_number":465,"context_line":"        \"\"\""},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def update_volume_connector(self, connector_id, values):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_f4db2a7a","line":464,"updated":"2015-08-20 23:35:37.000000000","message":":returns: A volume connector.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def create_volume_connector(self, values):"},{"line_number":462,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param values: Dict of values."},{"line_number":465,"context_line":"        \"\"\""},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def update_volume_connector(self, connector_id, values):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_9d8a0363","line":464,"in_reply_to":"fa1b9901_95b8a82b","updated":"2015-08-21 08:09:32.000000000","message":"Dictionary containing the information about connector.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def create_volume_connector(self, values):"},{"line_number":462,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param values: Dict of values."},{"line_number":465,"context_line":"        \"\"\""},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def update_volume_connector(self, connector_id, values):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_1502470a","line":464,"in_reply_to":"fa1b9901_9d8a0363","updated":"2015-08-21 13:01:26.000000000","message":"Thanks, I\u0027ll update it.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"2280f40f7139d2ce80cde1f70cedf8e1d0003cea","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def create_volume_connector(self, values):"},{"line_number":462,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param values: Dict of values."},{"line_number":465,"context_line":"        \"\"\""},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def update_volume_connector(self, connector_id, values):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_95b8a82b","line":464,"in_reply_to":"fa1b9901_f4db2a7a","updated":"2015-08-21 01:05:01.000000000","message":"Done","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":471,"context_line":"        :param values: Dict of values to update."},{"line_number":472,"context_line":"        :returns: A volume connector."},{"line_number":473,"context_line":"        \"\"\""},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_7de60f45","line":471,"updated":"2015-08-21 08:09:32.000000000","message":"Ditto as above regarding values.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":471,"context_line":"        :param values: Dict of values to update."},{"line_number":472,"context_line":"        :returns: A volume connector."},{"line_number":473,"context_line":"        \"\"\""},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_0311b05c","line":471,"in_reply_to":"fa1b9901_7de60f45","updated":"2015-08-21 13:01:26.000000000","message":"Done","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":566,"context_line":"        :returns: A volume connector."},{"line_number":567,"context_line":"        \"\"\""},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    @abc.abstractmethod"},{"line_number":570,"context_line":"    def get_volume_connector_by_uuid(self, connector_uuid):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_52906f43","line":567,"range":{"start_line":567,"start_character":8,"end_line":567,"end_character":9},"updated":"2016-03-17 09:15:06.000000000","message":"nit: add raises: VolumeConnectorNotFound","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":566,"context_line":"        :returns: A volume connector."},{"line_number":567,"context_line":"        \"\"\""},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    @abc.abstractmethod"},{"line_number":570,"context_line":"    def get_volume_connector_by_uuid(self, connector_uuid):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_399ff904","line":567,"range":{"start_line":567,"start_character":8,"end_line":567,"end_character":9},"in_reply_to":"1af94dfe_52906f43","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":574,"context_line":"        :returns: A volume connector."},{"line_number":575,"context_line":"        \"\"\""},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"    @abc.abstractmethod"},{"line_number":578,"context_line":"    def get_volume_connectors_by_node_id(self, node_id, limit\u003dNone,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_929af761","line":575,"range":{"start_line":575,"start_character":7,"end_line":575,"end_character":8},"updated":"2016-03-17 09:15:06.000000000","message":"ditto.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":574,"context_line":"        :returns: A volume connector."},{"line_number":575,"context_line":"        \"\"\""},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"    @abc.abstractmethod"},{"line_number":578,"context_line":"    def get_volume_connectors_by_node_id(self, node_id, limit\u003dNone,"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_b99309fa","line":575,"range":{"start_line":575,"start_character":7,"end_line":575,"end_character":8},"in_reply_to":"1af94dfe_929af761","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":598,"context_line":"                               connector."},{"line_number":599,"context_line":"        :returns: A volume connector."},{"line_number":600,"context_line":"        \"\"\""},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":603,"context_line":"        \"\"\"Update properties of a volume connector."}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_920dd792","line":600,"range":{"start_line":600,"start_character":8,"end_line":600,"end_character":9},"updated":"2016-03-17 09:15:06.000000000","message":"raises: VolumeConnectorValueAlreadyExists\n\nraises: VolumeConnectorAlreadyExists","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":598,"context_line":"                               connector."},{"line_number":599,"context_line":"        :returns: A volume connector."},{"line_number":600,"context_line":"        \"\"\""},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":603,"context_line":"        \"\"\"Update properties of a volume connector."}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_f9bbc173","line":600,"range":{"start_line":600,"start_character":8,"end_line":600,"end_character":9},"in_reply_to":"1af94dfe_920dd792","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"01815b9407bb1ecc4be672bb0484bec742c69022","unresolved":false,"context_lines":[{"line_number":602,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":603,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":606,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":607,"context_line":"                               connector to update."},{"line_number":608,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_c7c5db8e","line":605,"range":{"start_line":605,"start_character":29,"end_line":605,"end_character":58},"updated":"2016-02-28 16:53:39.000000000","message":"Would it be better to allow this operation for UUID as well as done by other interfaces.\nhttps://github.com/openstack/ironic/blob/master/ironic/db/api.py#L191-L194\nhttps://github.com/openstack/ironic/blob/master/ironic/db/api.py#L388-L391","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":602,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":603,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":606,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":607,"context_line":"                               connector to update."},{"line_number":608,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_f21c1bc3","line":605,"range":{"start_line":605,"start_character":29,"end_line":605,"end_character":58},"in_reply_to":"9aed3d3a_c7c5db8e","updated":"2016-03-17 09:15:06.000000000","message":"++","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":602,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":603,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":606,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":607,"context_line":"                               connector to update."},{"line_number":608,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_79b0518c","line":605,"range":{"start_line":605,"start_character":29,"end_line":605,"end_character":58},"in_reply_to":"9aed3d3a_c7c5db8e","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"01815b9407bb1ecc4be672bb0484bec742c69022","unresolved":false,"context_lines":[{"line_number":612,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":613,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":616,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_e7ba9f09","line":615,"range":{"start_line":615,"start_character":9,"end_line":615,"end_character":57},"updated":"2016-02-28 16:53:39.000000000","message":"Would it be better to allow this operation for UUID here as well?","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":612,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":613,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":616,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_327de3e7","line":615,"range":{"start_line":615,"start_character":9,"end_line":615,"end_character":57},"in_reply_to":"9aed3d3a_e7ba9f09","updated":"2016-03-17 09:15:06.000000000","message":"++","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":612,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":613,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":616,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_4409242c","line":615,"range":{"start_line":615,"start_character":9,"end_line":615,"end_character":57},"in_reply_to":"9aed3d3a_e7ba9f09","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":626,"context_line":"        :returns: A volume connector."},{"line_number":627,"context_line":"        \"\"\""},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_21c65448","line":626,"updated":"2016-07-19 20:32:22.000000000","message":"None of the exceptions raised by these methods are documented here.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":626,"context_line":"        :returns: A volume connector."},{"line_number":627,"context_line":"        \"\"\""},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_acedd4b8","line":626,"in_reply_to":"dada55a8_21c65448","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":634,"context_line":"        :returns: A volume connector."},{"line_number":635,"context_line":"        \"\"\""},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    @abc.abstractmethod"},{"line_number":638,"context_line":"    def get_volume_connectors_by_node_id(self, node_id, limit\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_0146b0be","line":635,"updated":"2016-07-19 20:32:22.000000000","message":"Document exception here.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":634,"context_line":"        :returns: A volume connector."},{"line_number":635,"context_line":"        \"\"\""},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    @abc.abstractmethod"},{"line_number":638,"context_line":"    def get_volume_connectors_by_node_id(self, node_id, limit\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_ec318c5b","line":635,"in_reply_to":"dada55a8_0146b0be","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":654,"context_line":"    def create_volume_connector(self, connector_info):"},{"line_number":655,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":658,"context_line":"                               connector."},{"line_number":659,"context_line":"        :returns: A volume connector."},{"line_number":660,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_bef42387","line":657,"range":{"start_line":657,"start_character":53,"end_line":657,"end_character":74},"updated":"2016-07-19 20:32:22.000000000","message":"\"information about the\"","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":654,"context_line":"    def create_volume_connector(self, connector_info):"},{"line_number":655,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":658,"context_line":"                               connector."},{"line_number":659,"context_line":"        :returns: A volume connector."},{"line_number":660,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_4c337862","line":657,"range":{"start_line":657,"start_character":53,"end_line":657,"end_character":74},"in_reply_to":"dada55a8_bef42387","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":658,"context_line":"                               connector."},{"line_number":659,"context_line":"        :returns: A volume connector."},{"line_number":660,"context_line":"        \"\"\""},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":663,"context_line":"        \"\"\"Update properties of a volume connector."}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_c1693827","line":660,"updated":"2016-07-19 20:32:22.000000000","message":"Document exception here.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":658,"context_line":"                               connector."},{"line_number":659,"context_line":"        :returns: A volume connector."},{"line_number":660,"context_line":"        \"\"\""},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":663,"context_line":"        \"\"\"Update properties of a volume connector."}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_6c3e3c29","line":660,"in_reply_to":"dada55a8_c1693827","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":667,"context_line":"                               connector to update."},{"line_number":668,"context_line":"        :returns: A volume connector."},{"line_number":669,"context_line":"        \"\"\""},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    @abc.abstractmethod"},{"line_number":672,"context_line":"    def destroy_volume_connector(self, connector_id):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_0174f0fa","line":669,"updated":"2016-07-19 20:32:22.000000000","message":"Document exceptions here.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":667,"context_line":"                               connector to update."},{"line_number":668,"context_line":"        :returns: A volume connector."},{"line_number":669,"context_line":"        \"\"\""},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    @abc.abstractmethod"},{"line_number":672,"context_line":"    def destroy_volume_connector(self, connector_id):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_cc4768ba","line":669,"in_reply_to":"dada55a8_0174f0fa","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    @abc.abstractmethod"},{"line_number":672,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":673,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":676,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_3ee153d1","line":673,"range":{"start_line":673,"start_character":19,"end_line":673,"end_character":21},"updated":"2016-07-19 20:32:22.000000000","message":"s/an/a/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    @abc.abstractmethod"},{"line_number":672,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":673,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":676,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_ac44b4b6","line":673,"range":{"start_line":673,"start_character":19,"end_line":673,"end_character":21},"in_reply_to":"dada55a8_3ee153d1","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":673,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":676,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_81d580ba","line":676,"updated":"2016-07-19 20:32:22.000000000","message":"Document exceptions here.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":673,"context_line":"        \"\"\"Destroy an volume connector."},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":676,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_ec186cd5","line":676,"in_reply_to":"dada55a8_81d580ba","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7112484266db108b6d9cd6a26396823b589138fb","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        :param sort_dir: direction in which results should be sorted."},{"line_number":628,"context_line":"                         (asc, desc)"},{"line_number":629,"context_line":"        :returns: A list of volume connectors."},{"line_number":630,"context_line":"        \"\"\""},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    @abc.abstractmethod"},{"line_number":633,"context_line":"    def get_volume_connector_by_id(self, connector_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_fb015e39","line":630,"updated":"2016-07-30 14:54:12.000000000","message":"InvalidParameterValue is raised if sort key does not exist. Unit test for this case is created in this patch.","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"4df919e73d215681032f7ca3ceff11eda3cc9303","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        :param sort_dir: direction in which results should be sorted."},{"line_number":628,"context_line":"                         (asc, desc)"},{"line_number":629,"context_line":"        :returns: A list of volume connectors."},{"line_number":630,"context_line":"        \"\"\""},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    @abc.abstractmethod"},{"line_number":633,"context_line":"    def get_volume_connector_by_id(self, connector_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_4715f699","line":630,"in_reply_to":"bacf61ea_fb015e39","updated":"2016-08-01 17:47:12.000000000","message":"Done","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7112484266db108b6d9cd6a26396823b589138fb","unresolved":false,"context_lines":[{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":637,"context_line":"        :returns: A volume connector."},{"line_number":638,"context_line":"        :raises: NoResultFound if the id is not found."},{"line_number":639,"context_line":"        \"\"\""},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_9b0782c9","line":638,"range":{"start_line":638,"start_character":17,"end_line":638,"end_character":30},"updated":"2016-07-30 14:54:12.000000000","message":"VolumeConnectorNotFound is correct.","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"4df919e73d215681032f7ca3ceff11eda3cc9303","unresolved":false,"context_lines":[{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":637,"context_line":"        :returns: A volume connector."},{"line_number":638,"context_line":"        :raises: NoResultFound if the id is not found."},{"line_number":639,"context_line":"        \"\"\""},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_e7718a0d","line":638,"range":{"start_line":638,"start_character":17,"end_line":638,"end_character":30},"in_reply_to":"bacf61ea_9b0782c9","updated":"2016-08-01 17:47:12.000000000","message":"Done","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7112484266db108b6d9cd6a26396823b589138fb","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":646,"context_line":"        :returns: A volume connector."},{"line_number":647,"context_line":"        :raises: NoResultFound if the uuid is not found."},{"line_number":648,"context_line":"        \"\"\""},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_bb124607","line":647,"range":{"start_line":647,"start_character":17,"end_line":647,"end_character":30},"updated":"2016-07-30 14:54:12.000000000","message":"ditto","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"4df919e73d215681032f7ca3ceff11eda3cc9303","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":646,"context_line":"        :returns: A volume connector."},{"line_number":647,"context_line":"        :raises: NoResultFound if the uuid is not found."},{"line_number":648,"context_line":"        \"\"\""},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_07fc9e3c","line":647,"range":{"start_line":647,"start_character":17,"end_line":647,"end_character":30},"in_reply_to":"bacf61ea_bb124607","updated":"2016-08-01 17:47:12.000000000","message":"Done","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7112484266db108b6d9cd6a26396823b589138fb","unresolved":false,"context_lines":[{"line_number":687,"context_line":"                 connector_id already exists."},{"line_number":688,"context_line":"        :raises: VolumeConnectorNotFound if the specified connector_id does"},{"line_number":689,"context_line":"                 not exist."},{"line_number":690,"context_line":"        \"\"\""},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    @abc.abstractmethod"},{"line_number":693,"context_line":"    def destroy_volume_connector(self, connector_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_3bedb6ef","line":690,"updated":"2016-07-30 14:54:12.000000000","message":"InvalidParameterValue is raised when a uuid is included in connector_info","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"4df919e73d215681032f7ca3ceff11eda3cc9303","unresolved":false,"context_lines":[{"line_number":687,"context_line":"                 connector_id already exists."},{"line_number":688,"context_line":"        :raises: VolumeConnectorNotFound if the specified connector_id does"},{"line_number":689,"context_line":"                 not exist."},{"line_number":690,"context_line":"        \"\"\""},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    @abc.abstractmethod"},{"line_number":693,"context_line":"    def destroy_volume_connector(self, connector_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_c7b3a696","line":690,"in_reply_to":"bacf61ea_3bedb6ef","updated":"2016-08-01 17:47:12.000000000","message":"Done","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"567a9e5c51816d0b128f2d1cc3081b2b71960d29","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @abc.abstractmethod"},{"line_number":185,"context_line":"    def destroy_node(self, node_id):"},{"line_number":186,"context_line":"        \"\"\"Destroy a node and all associated interfaces."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        :param node_id: The id or uuid of a node."},{"line_number":189,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_c94613bf","line":186,"updated":"2016-11-23 10:23:55.000000000","message":"interfaces/tags/connectors now.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_185d6c79","line":634,"updated":"2016-11-22 20:51:12.000000000","message":"I really thought this referred to the \u0027connector_id\u0027 field of a volume_connector. I realize you were trying to be consistent with the other get_XX_by_id() methods, but I think that we should restrict use of \u0027connector_id\u0027 to only refer to the \u0027connector_id\u0027 field. Please use \u0027id\u0027 instead of \u0027connector_id\u0027 here and elsewhere.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_22523914","line":634,"in_reply_to":"5a74a57a_8fc18931","updated":"2016-11-23 14:38:25.000000000","message":"Since this was modeled after ports, it would be actual primary key id, not the cinder external id that gets stored in connector_id.  Soo confusing :(","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_8fc18931","line":634,"in_reply_to":"7a77a97e_185d6c79","updated":"2016-11-23 01:47:34.000000000","message":"After looking at the code a bit more, I am thinking that this refers to either the id or the uuid. Is that true? If so, maybe call it \u0027ident\u0027 instead.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":638,"context_line":"        :returns: A volume connector."},{"line_number":639,"context_line":"        :raises: VolumeConnectorNotFound if the id is not found."},{"line_number":640,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_3de77a13","line":637,"updated":"2016-11-22 20:51:12.000000000","message":"nit s/id/ID/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":638,"context_line":"        :returns: A volume connector."},{"line_number":639,"context_line":"        :raises: VolumeConnectorNotFound if the id is not found."},{"line_number":640,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_c2ad058a","line":637,"in_reply_to":"7a77a97e_3de77a13","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":638,"context_line":"        :returns: A volume connector."},{"line_number":639,"context_line":"        :raises: VolumeConnectorNotFound if the id is not found."},{"line_number":640,"context_line":"        \"\"\""},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_fdb34208","line":639,"updated":"2016-11-22 20:51:12.000000000","message":"s/the id/a volume connector with the specified ID/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":638,"context_line":"        :returns: A volume connector."},{"line_number":639,"context_line":"        :raises: VolumeConnectorNotFound if the id is not found."},{"line_number":640,"context_line":"        \"\"\""},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_82a30d9e","line":639,"in_reply_to":"7a77a97e_fdb34208","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def get_volume_connector_by_uuid(self, connector_uuid):"},{"line_number":644,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":647,"context_line":"        :returns: A volume connector."},{"line_number":648,"context_line":"        :raises: VolumeConnectorNotFound if the uuid is not found."},{"line_number":649,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_bda0eaa6","line":646,"updated":"2016-11-22 20:51:12.000000000","message":"nit: s/uuid/UUID/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def get_volume_connector_by_uuid(self, connector_uuid):"},{"line_number":644,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":647,"context_line":"        :returns: A volume connector."},{"line_number":648,"context_line":"        :raises: VolumeConnectorNotFound if the uuid is not found."},{"line_number":649,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_629ef157","line":646,"in_reply_to":"7a77a97e_bda0eaa6","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":647,"context_line":"        :returns: A volume connector."},{"line_number":648,"context_line":"        :raises: VolumeConnectorNotFound if the uuid is not found."},{"line_number":649,"context_line":"        \"\"\""},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_3d95ba3f","line":648,"updated":"2016-11-22 20:51:12.000000000","message":"s/the uuid/a volume connector with the specified UUID/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":647,"context_line":"        :returns: A volume connector."},{"line_number":648,"context_line":"        :raises: VolumeConnectorNotFound if the uuid is not found."},{"line_number":649,"context_line":"        \"\"\""},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_221799a4","line":648,"in_reply_to":"7a77a97e_3d95ba3f","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":669,"context_line":"        \"\"\"Create a new volume connector."},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        :param connector_info: Dictionary containing information about the"},{"line_number":672,"context_line":"                               connector."},{"line_number":673,"context_line":"        :returns: A volume connector."},{"line_number":674,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":675,"context_line":"                 connector_id already exists."}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_fdafc27a","line":672,"updated":"2016-11-22 20:51:12.000000000","message":"Would be nice to document the expected keys in this dict.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":673,"context_line":"        :returns: A volume connector."},{"line_number":674,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":675,"context_line":"                 connector_id already exists."},{"line_number":676,"context_line":"        :raises: VolumeConnectorAlreadyExists if this connector already"},{"line_number":677,"context_line":"                 exists."},{"line_number":678,"context_line":"        \"\"\""},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_9dd6ceef","line":676,"updated":"2016-11-22 20:51:12.000000000","message":"if I understand this, s/this connector/a connector with the same UUID/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":673,"context_line":"        :returns: A volume connector."},{"line_number":674,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":675,"context_line":"                 connector_id already exists."},{"line_number":676,"context_line":"        :raises: VolumeConnectorAlreadyExists if this connector already"},{"line_number":677,"context_line":"                 exists."},{"line_number":678,"context_line":"        \"\"\""},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_22ccf934","line":676,"in_reply_to":"7a77a97e_9dd6ceef","updated":"2016-11-23 14:38:25.000000000","message":"Correct!  Consider it done.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                 exists."},{"line_number":678,"context_line":"        \"\"\""},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":681,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        :param connector_id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_dd14c6a0","line":680,"updated":"2016-11-22 20:51:12.000000000","message":"missing @abc.abstractmethod above this line","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                 exists."},{"line_number":678,"context_line":"        \"\"\""},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":681,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        :param connector_id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_854b172b","line":680,"in_reply_to":"7a77a97e_dd14c6a0","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":680,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":681,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":684,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":685,"context_line":"                               connector to update."},{"line_number":686,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_7d2012f8","line":683,"updated":"2016-11-22 20:51:12.000000000","message":"nit. s/The id/The ID/\n\nThis seems odd. We need to be really clear about this, since a volume connector has id, uuid, connector_id fields :-(","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":680,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":681,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        :param connector_id: The id of a volume connector."},{"line_number":684,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":685,"context_line":"                               connector to update."},{"line_number":686,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_e5904bef","line":683,"in_reply_to":"7a77a97e_7d2012f8","updated":"2016-11-23 14:38:25.000000000","message":"Changed to id. :(","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                               connector to update."},{"line_number":686,"context_line":"        :returns: A volume connector."},{"line_number":687,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":688,"context_line":"                 connector_id already exists."},{"line_number":689,"context_line":"        :raises: VolumeConnectorNotFound if the specified connector_id does"},{"line_number":690,"context_line":"                 not exist."},{"line_number":691,"context_line":"        :raises: InvalidParameterValue when a UUID is included in"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_9d8ecece","line":688,"updated":"2016-11-22 20:51:12.000000000","message":"This is an update -- you mean if trying to change the connector ID to a connector ID that is already being used by another volume connector?\n\nThis is an example of where \u0027connector_id\u0027 is used to mean the \u0027connector_id\u0027 field, vs in line 680, \u0027connector_id\u0027 is the ID of the volume connector :-(","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                               connector to update."},{"line_number":686,"context_line":"        :returns: A volume connector."},{"line_number":687,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":688,"context_line":"                 connector_id already exists."},{"line_number":689,"context_line":"        :raises: VolumeConnectorNotFound if the specified connector_id does"},{"line_number":690,"context_line":"                 not exist."},{"line_number":691,"context_line":"        :raises: InvalidParameterValue when a UUID is included in"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_85ceb781","line":688,"in_reply_to":"7a77a97e_9d8ecece","updated":"2016-11-23 14:38:25.000000000","message":"Updated, hopefully it is better in the next revision.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        :returns: A volume connector."},{"line_number":687,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":688,"context_line":"                 connector_id already exists."},{"line_number":689,"context_line":"        :raises: VolumeConnectorNotFound if the specified connector_id does"},{"line_number":690,"context_line":"                 not exist."},{"line_number":691,"context_line":"        :raises: InvalidParameterValue when a UUID is included in"},{"line_number":692,"context_line":"                 connector_info."}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_024096a4","line":689,"updated":"2016-11-22 20:51:12.000000000","message":"it isn\u0027t the connector_id that doesn\u0027t exist, it is the volume connector that doesn\u0027t exist.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        :returns: A volume connector."},{"line_number":687,"context_line":"        :raises: VolumeConnectorConnectorIdAlreadyExists if the specified"},{"line_number":688,"context_line":"                 connector_id already exists."},{"line_number":689,"context_line":"        :raises: VolumeConnectorNotFound if the specified connector_id does"},{"line_number":690,"context_line":"                 not exist."},{"line_number":691,"context_line":"        :raises: InvalidParameterValue when a UUID is included in"},{"line_number":692,"context_line":"                 connector_info."}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_259a4315","line":689,"in_reply_to":"7a77a97e_024096a4","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @abc.abstractmethod"},{"line_number":185,"context_line":"    def destroy_node(self, node_id):"},{"line_number":186,"context_line":"        \"\"\"Destroy a node and all associated interfaces."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        :param node_id: The id or uuid of a node."},{"line_number":189,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_cd544d56","line":186,"updated":"2016-11-23 15:37:44.000000000","message":"you missed vdrok\u0027s comment: s/interfaces/interfaces, tags, and volume connectors/","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":644,"context_line":"    def get_volume_connector_by_uuid(self, connector_uuid):"},{"line_number":645,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        :param connector_uuid: The uuid of a connector."},{"line_number":648,"context_line":"        :returns: A volume connector with the specified UUID."},{"line_number":649,"context_line":"        :raises: VolumeConnectorNotFound If a volume connector"},{"line_number":650,"context_line":"                 with the specified UUID is not found."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_2de301a5","line":647,"updated":"2016-11-23 15:37:44.000000000","message":"nit: s/uuid/UUID/","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1f724c4f3a037e141a1e9672d936a14bf109d679","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        :param sort_dir: Direction in which results should be sorted"},{"line_number":665,"context_line":"                         (asc, desc)"},{"line_number":666,"context_line":"        :returns: A list of volume connectors."},{"line_number":667,"context_line":"        \"\"\""},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"    @abc.abstractmethod"},{"line_number":670,"context_line":"    def create_volume_connector(self, connector_info):"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_e7175c4f","line":667,"updated":"2016-11-23 19:58:11.000000000","message":":raises: InvalidParameterValue if sort_key does not exist.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        :param connector_info: Dictionary containing information about the"},{"line_number":674,"context_line":"                               connector. Example::"},{"line_number":675,"context_line":"  "},{"line_number":676,"context_line":"                                   {"},{"line_number":677,"context_line":"                                       \u0027uuid\u0027: \u0027000000-..\u0027,"},{"line_number":678,"context_line":"                                       \u0027type\u0027: \u0027wwnn\u0027,"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_a7e72511","line":675,"updated":"2016-11-23 19:06:30.000000000","message":"UGH! :(","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"62fc4c652bb276f0d9e6389c09a13a51a39c5c5d","unresolved":false,"context_lines":[{"line_number":676,"context_line":"                                   {"},{"line_number":677,"context_line":"                                       \u0027uuid\u0027: \u0027000000-..\u0027,"},{"line_number":678,"context_line":"                                       \u0027type\u0027: \u0027wwnn\u0027,"},{"line_number":679,"context_line":"                                       \u0027connector_id\u0027: \u002700:01:02:03:04:05:06\u0027"},{"line_number":680,"context_line":"                                   }"},{"line_number":681,"context_line":"                                   "},{"line_number":682,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_e8101751","line":679,"updated":"2016-11-23 15:26:22.000000000","message":"Need to add node_id","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":678,"context_line":"                                       \u0027type\u0027: \u0027wwnn\u0027,"},{"line_number":679,"context_line":"                                       \u0027connector_id\u0027: \u002700:01:02:03:04:05:06\u0027"},{"line_number":680,"context_line":"                                   }"},{"line_number":681,"context_line":"                                   "},{"line_number":682,"context_line":"        :returns: A volume connector."},{"line_number":683,"context_line":"        :raises: VolumeConnectorConnectorTypeAlreadyExists If a connector"},{"line_number":684,"context_line":"                 already exsists with a matching type and connector_id."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_07eff9e8","line":681,"updated":"2016-11-23 19:06:30.000000000","message":"double ugh :(","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"82a5a1cc2cc40e71e46f5ff443b8cb9a03941a1a","unresolved":false,"context_lines":[{"line_number":681,"context_line":"                                   "},{"line_number":682,"context_line":"        :returns: A volume connector."},{"line_number":683,"context_line":"        :raises: VolumeConnectorConnectorTypeAlreadyExists If a connector"},{"line_number":684,"context_line":"                 already exsists with a matching type and connector_id."},{"line_number":685,"context_line":"        :raises: VolumeConnectorAlreadyExists If a volume connector with"},{"line_number":686,"context_line":"                 the same UUID already exists."},{"line_number":687,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_ca0fc5df","line":684,"updated":"2016-11-23 20:05:54.000000000","message":"nit: s/exsists/exists/","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                 the same UUID already exists."},{"line_number":687,"context_line":"        \"\"\""},{"line_number":688,"context_line":"    @abc.abstractmethod"},{"line_number":689,"context_line":"    def update_volume_connector(self, id, connector_info):"},{"line_number":690,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"        :param id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_8d9fb502","line":689,"updated":"2016-11-23 15:37:44.000000000","message":"I looked at how this was being used, and the UUID was being passed as the value for id. I think we should s/id/ident/.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                 the same UUID already exists."},{"line_number":687,"context_line":"        \"\"\""},{"line_number":688,"context_line":"    @abc.abstractmethod"},{"line_number":689,"context_line":"    def update_volume_connector(self, id, connector_info):"},{"line_number":690,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"        :param id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_67b42df2","line":689,"in_reply_to":"5a74a57a_8d9fb502","updated":"2016-11-23 19:06:30.000000000","message":"Works for me.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":689,"context_line":"    def update_volume_connector(self, id, connector_info):"},{"line_number":690,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"        :param id: The id of a volume connector."},{"line_number":693,"context_line":"        :param connector_info: Dictionary containing the information about"},{"line_number":694,"context_line":"                               connector to update."},{"line_number":695,"context_line":"        :returns: A volume connector."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_8db6d588","line":692,"updated":"2016-11-23 15:37:44.000000000","message":":param ident: The UUID or integer ID of a volume connector.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":697,"context_line":"                 connector already exists with a matching type and"},{"line_number":698,"context_line":"                 connector_id field."},{"line_number":699,"context_line":"        :raises: VolumeConnectorNotFound If the specified volume connector"},{"line_number":700,"context_line":"                 ID does not exist."},{"line_number":701,"context_line":"        :raises: InvalidParameterValue When a UUID is included in"},{"line_number":702,"context_line":"                 connector_info."},{"line_number":703,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_cd77edd2","line":700,"updated":"2016-11-23 15:37:44.000000000","message":"If a volume connector with the specified ident does not exist.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":703,"context_line":"        \"\"\""},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    @abc.abstractmethod"},{"line_number":706,"context_line":"    def destroy_volume_connector(self, id):"},{"line_number":707,"context_line":"        \"\"\"Destroy a volume connector."},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"        :param id: The id of a volume connector."}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_a80e1f32","line":706,"updated":"2016-11-23 15:37:44.000000000","message":"ditto here s/id/ident/","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    def destroy_volume_connector(self, id):"},{"line_number":707,"context_line":"        \"\"\"Destroy a volume connector."},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"        :param id: The id of a volume connector."},{"line_number":710,"context_line":"        :raises: VolumeConnectorNotFound if the specified id does not exist."},{"line_number":711,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_081e3363","line":709,"updated":"2016-11-23 15:37:44.000000000","message":"ditto, the UUID or integer ID of a volume connector.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        \"\"\"Destroy a volume connector."},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"        :param id: The id of a volume connector."},{"line_number":710,"context_line":"        :raises: VolumeConnectorNotFound if the specified id does not exist."},{"line_number":711,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_a85c5f26","line":710,"updated":"2016-11-23 15:37:44.000000000","message":"if a volume connector with the specified ident does not exist.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c240e4f0f80737d5a3a89df4ecde0cfa58bca8ba","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_ae42543c","line":634,"updated":"2016-11-25 11:30:58.000000000","message":"+1","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e8db4c0ca2483c43b591b60f5819cd66c618388f","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_485f1441","line":634,"range":{"start_line":634,"start_character":41,"end_line":634,"end_character":43},"updated":"2016-11-24 15:41:53.000000000","message":"everywhere else in this module, it specifies which exactly id it is, as there is a builtin id() function. Maybe at least conn_id?","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"43ebaf089a257fcb73cc25e292850e94587b557b","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_5c02110b","line":634,"range":{"start_line":634,"start_character":41,"end_line":634,"end_character":43},"in_reply_to":"5a74a57a_3e8a12c0","updated":"2016-11-28 15:40:32.000000000","message":"Done","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d06af33b1c985b6d10d143369526ec40be0070b3","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_5991a851","line":634,"range":{"start_line":634,"start_character":41,"end_line":634,"end_character":43},"in_reply_to":"5a74a57a_3e8a12c0","updated":"2016-11-24 16:16:31.000000000","message":"I\u0027m ok with db_id too.","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2eea16c5121dbfac1310fb357d73472f30358430","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_3e8a12c0","line":634,"range":{"start_line":634,"start_character":41,"end_line":634,"end_character":43},"in_reply_to":"5a74a57a_485f1441","updated":"2016-11-24 16:02:55.000000000","message":"Sigh, I didn\u0027t realize that. The problem is that volume_connector has a \u0027connector_id\u0027 field, so I wanted to distinguish it from this id.\n\nWe should change it. How about \u0027db_id\u0027?","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1f364c5eb7ec31273208226afe84dfc390e80522","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_9bb7afd7","line":634,"range":{"start_line":634,"start_character":41,"end_line":634,"end_character":43},"in_reply_to":"5a74a57a_5991a851","updated":"2016-11-24 20:23:08.000000000","message":"I\u0027m fine with a followon patch for this or if it is updated in this patch.","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"43ebaf089a257fcb73cc25e292850e94587b557b","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        \"\"\""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    @abc.abstractmethod"},{"line_number":634,"context_line":"    def get_volume_connector_by_id(self, id):"},{"line_number":635,"context_line":"        \"\"\"Return a volume connector representation."},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        :param id: The ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_7c050d0f","line":634,"in_reply_to":"5a74a57a_ae42543c","updated":"2016-11-28 15:40:32.000000000","message":"Done","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e8db4c0ca2483c43b591b60f5819cd66c618388f","unresolved":false,"context_lines":[{"line_number":688,"context_line":"                 the same UUID already exists."},{"line_number":689,"context_line":"        \"\"\""},{"line_number":690,"context_line":"    @abc.abstractmethod"},{"line_number":691,"context_line":"    def update_volume_connector(self, ident, connector_info):"},{"line_number":692,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"        :param ident: The UUID or integer ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_c34dc773","line":691,"range":{"start_line":691,"start_character":38,"end_line":691,"end_character":43},"updated":"2016-11-24 15:41:53.000000000","message":"In this case, it does not shadow anything, but still, maybe connector_ident or conn_ident, if we want to correspond to conn_id","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"43ebaf089a257fcb73cc25e292850e94587b557b","unresolved":false,"context_lines":[{"line_number":688,"context_line":"                 the same UUID already exists."},{"line_number":689,"context_line":"        \"\"\""},{"line_number":690,"context_line":"    @abc.abstractmethod"},{"line_number":691,"context_line":"    def update_volume_connector(self, ident, connector_info):"},{"line_number":692,"context_line":"        \"\"\"Update properties of a volume connector."},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"        :param ident: The UUID or integer ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_7c7a6d89","line":691,"range":{"start_line":691,"start_character":38,"end_line":691,"end_character":43},"in_reply_to":"5a74a57a_c34dc773","updated":"2016-11-28 15:40:32.000000000","message":"ident should be uuid or db id if memory serves, so ident seems appropriate.","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e8db4c0ca2483c43b591b60f5819cd66c618388f","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        \"\"\""},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    @abc.abstractmethod"},{"line_number":708,"context_line":"    def destroy_volume_connector(self, ident):"},{"line_number":709,"context_line":"        \"\"\"Destroy a volume connector."},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"        :param ident: The UUID or integer ID of a volume connector."}],"source_content_type":"text/x-python","patch_set":58,"id":"5a74a57a_235bdb2f","line":708,"range":{"start_line":708,"start_character":39,"end_line":708,"end_character":44},"updated":"2016-11-24 15:41:53.000000000","message":"ditto","commit_id":"a82a0ceba188e1ac2cae662ed50b4ff58988cac9"}],"ironic/db/sqlalchemy/alembic/versions/4755b243345_add_volume_connectors_table.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":41,"context_line":"                    sa.UniqueConstraint(\u0027uuid\u0027,"},{"line_number":42,"context_line":"                                        name\u003d\u0027uniq_volumeconnector0uuid\u0027),"},{"line_number":43,"context_line":"                    mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":44,"context_line":"                    mysql_engine\u003d\u0027InnoDB\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_ddc87b57","line":41,"updated":"2015-08-21 08:09:32.000000000","message":"Should we add a unique constraint that the combination (\u0027type\u0027, \u0027value\u0027) shouldn\u0027t be the same ?  I think it makes sense for every type of connector - wwn, iscsi-iqn, ip (we cannot have duplicate for any of these values for multiple nodes).  But I don\u0027t know if there will be some connectors which needn\u0027t be unique across nodes.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":41,"context_line":"                    sa.UniqueConstraint(\u0027uuid\u0027,"},{"line_number":42,"context_line":"                                        name\u003d\u0027uniq_volumeconnector0uuid\u0027),"},{"line_number":43,"context_line":"                    mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":44,"context_line":"                    mysql_engine\u003d\u0027InnoDB\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_0b1e9b6f","line":41,"in_reply_to":"fa1b9901_ddc87b57","updated":"2015-08-21 13:01:26.000000000","message":"OK, I\u0027ll give it a try.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"}],"ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"01815b9407bb1ecc4be672bb0484bec742c69022","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def upgrade():"},{"line_number":30,"context_line":"    op.create_table(\u0027volume_connectors\u0027,"},{"line_number":31,"context_line":"                    sa.Column(\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":32,"context_line":"                    sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":33,"context_line":"                    sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_4706ebce","line":30,"range":{"start_line":30,"start_character":20,"end_line":30,"end_character":40},"updated":"2016-02-28 16:53:39.000000000","message":"It may be useful to have a \u0027name\u0027 field for the \u0027volume_connectors\u0027 for ease of readability.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f29d035cacb7600db3da875cdbf81df70b565aab","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def upgrade():"},{"line_number":30,"context_line":"    op.create_table(\u0027volume_connectors\u0027,"},{"line_number":31,"context_line":"                    sa.Column(\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":32,"context_line":"                    sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":33,"context_line":"                    sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_37bfd9fc","line":30,"range":{"start_line":30,"start_character":20,"end_line":30,"end_character":40},"in_reply_to":"9aed3d3a_4706ebce","updated":"2016-03-29 16:12:19.000000000","message":"But if we have a name field, does that mean that we may eventually want the API to be able to be leveraged with that name?  Or is it purely so a user doesn\u0027t get the crazy idea to create a view of the tables joined?","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def upgrade():"},{"line_number":30,"context_line":"    op.create_table(\u0027volume_connectors\u0027,"},{"line_number":31,"context_line":"                    sa.Column(\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":32,"context_line":"                    sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":33,"context_line":"                    sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_0f5574c5","line":30,"range":{"start_line":30,"start_character":20,"end_line":30,"end_character":40},"in_reply_to":"ba0121b8_37bfd9fc","updated":"2016-04-22 09:06:09.000000000","message":"At this time, I will not add the name field because I\u0027m not sure that it\u0027s usefulness and also ports table which has same kind of information about nodes doesn\u0027t have that field.\n\nWe can add the name field later if this is really important for you and/or users.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":34,"context_line":"                    sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":35,"context_line":"                    sa.Column(\u0027node_id\u0027, sa.Integer(), nullable\u003dTrue),"},{"line_number":36,"context_line":"                    sa.Column(\u0027type\u0027, sa.String(length\u003d64), nullable\u003dTrue),"},{"line_number":37,"context_line":"                    sa.Column(\u0027value\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_9e131f66","line":36,"range":{"start_line":36,"start_character":55,"end_line":36,"end_character":57},"updated":"2016-07-19 20:31:33.000000000","message":"Specification calls for 32","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":34,"context_line":"                    sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":35,"context_line":"                    sa.Column(\u0027node_id\u0027, sa.Integer(), nullable\u003dTrue),"},{"line_number":36,"context_line":"                    sa.Column(\u0027type\u0027, sa.String(length\u003d64), nullable\u003dTrue),"},{"line_number":37,"context_line":"                    sa.Column(\u0027value\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_2c0f2489","line":36,"range":{"start_line":36,"start_character":55,"end_line":36,"end_character":57},"in_reply_to":"dada55a8_9e131f66","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":35,"context_line":"                    sa.Column(\u0027node_id\u0027, sa.Integer(), nullable\u003dTrue),"},{"line_number":36,"context_line":"                    sa.Column(\u0027type\u0027, sa.String(length\u003d64), nullable\u003dTrue),"},{"line_number":37,"context_line":"                    sa.Column(\u0027value\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_e13b9ccf","line":37,"range":{"start_line":37,"start_character":31,"end_line":37,"end_character":36},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":35,"context_line":"                    sa.Column(\u0027node_id\u0027, sa.Integer(), nullable\u003dTrue),"},{"line_number":36,"context_line":"                    sa.Column(\u0027type\u0027, sa.String(length\u003d64), nullable\u003dTrue),"},{"line_number":37,"context_line":"                    sa.Column(\u0027value\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_8c28d0e3","line":37,"range":{"start_line":37,"start_character":31,"end_line":37,"end_character":36},"in_reply_to":"dada55a8_e13b9ccf","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"33627a6e385852fe744c661eb4970f59a761c588","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":41,"context_line":"                    sa.UniqueConstraint(\u0027type\u0027, \u0027value\u0027,"},{"line_number":42,"context_line":"                                        name\u003d\u0027uniq_volumeconnector0type0\u0027"},{"line_number":43,"context_line":"                                             \u0027value\u0027),"},{"line_number":44,"context_line":"                    sa.UniqueConstraint(\u0027uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_677b0dbf","line":41,"range":{"start_line":41,"start_character":40,"end_line":41,"end_character":56},"updated":"2016-06-30 03:23:04.000000000","message":"Do we need to add node_id to this unique constraint?\nIs this type+value unique for all different nodes?","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":41,"context_line":"                    sa.UniqueConstraint(\u0027type\u0027, \u0027value\u0027,"},{"line_number":42,"context_line":"                                        name\u003d\u0027uniq_volumeconnector0type0\u0027"},{"line_number":43,"context_line":"                                             \u0027value\u0027),"},{"line_number":44,"context_line":"                    sa.UniqueConstraint(\u0027uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_5e1367b8","line":41,"range":{"start_line":41,"start_character":40,"end_line":41,"end_character":56},"in_reply_to":"3aaa91ec_677b0dbf","updated":"2016-07-19 20:31:33.000000000","message":"I\u0027m not really sure a unique constraint makes sense being mixed in with a node_id.  Type and connector_id should always be unique on it\u0027s own. \n\nAlso s/value/connector_id/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"},{"line_number":40,"context_line":"                    sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":41,"context_line":"                    sa.UniqueConstraint(\u0027type\u0027, \u0027value\u0027,"},{"line_number":42,"context_line":"                                        name\u003d\u0027uniq_volumeconnector0type0\u0027"},{"line_number":43,"context_line":"                                             \u0027value\u0027),"},{"line_number":44,"context_line":"                    sa.UniqueConstraint(\u0027uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_6c259c07","line":41,"range":{"start_line":41,"start_character":40,"end_line":41,"end_character":56},"in_reply_to":"dada55a8_5e1367b8","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"f77fce8cead85c23ff2a26786f924f181ae05b5f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":35,"context_line":"                    sa.Column(\u0027node_id\u0027, sa.Integer(), nullable\u003dTrue),"},{"line_number":36,"context_line":"                    sa.Column(\u0027type\u0027, sa.String(length\u003d32), nullable\u003dTrue),"},{"line_number":37,"context_line":"                    sa.Column(\u0027connnector_id\u0027, sa.String(length\u003d255),"},{"line_number":38,"context_line":"                              nullable\u003dTrue),"},{"line_number":39,"context_line":"                    sa.Column(\u0027extra\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":40,"context_line":"                    sa.ForeignKeyConstraint([\u0027node_id\u0027], [\u0027nodes.id\u0027], ),"}],"source_content_type":"text/x-python","patch_set":22,"id":"dada55a8_0562f33d","line":37,"range":{"start_line":37,"start_character":31,"end_line":37,"end_character":44},"updated":"2016-07-21 02:50:46.000000000","message":"s/connnector_id/connector_id/\nI thinks this causes errors in py27 test.\n\nAlso, https://review.openstack.org/#/c/200983 needs a corresponding change.","commit_id":"940b01fe21705c50aad80fd5f2ee827837a1aa82"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"01815b9407bb1ecc4be672bb0484bec742c69022","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                session.add(connector)"},{"line_number":808,"context_line":"                session.flush()"},{"line_number":809,"context_line":"            except db_exc.DBDuplicateEntry as exc:"},{"line_number":810,"context_line":"                if \u0027type\u0027 in exc.columns:"},{"line_number":811,"context_line":"                    raise exception.VolumeConnectorValueAlreadyExists("},{"line_number":812,"context_line":"                        type\u003dconnector_info[\u0027type\u0027],"},{"line_number":813,"context_line":"                        value\u003dconnector_info[\u0027value\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_879ab361","line":810,"range":{"start_line":810,"start_character":16,"end_line":810,"end_character":40},"updated":"2016-02-28 16:53:39.000000000","message":"Since \u0027type\u0027 and \u0027value\u0027 together makes a unique constraint, better to check \u0027value\u0027 as well before raising this exception stating connector with given \u0027type\u0027 and \u0027value\u0027 already exists.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"01815b9407bb1ecc4be672bb0484bec742c69022","unresolved":false,"context_lines":[{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":819,"context_line":"        if \u0027uuid\u0027 in connector_info:"},{"line_number":820,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Volume Connector.\")"},{"line_number":821,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_c7cb1b52","line":820,"range":{"start_line":820,"start_character":59,"end_line":820,"end_character":77},"updated":"2016-02-28 16:53:39.000000000","message":"nit: s/\u0027Volume Connector.\u0027 / \u0027volume connector.\u0027","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":819,"context_line":"        if \u0027uuid\u0027 in connector_info:"},{"line_number":820,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Volume Connector.\")"},{"line_number":821,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba0121b8_a48da07d","line":820,"range":{"start_line":820,"start_character":59,"end_line":820,"end_character":77},"in_reply_to":"9aed3d3a_c7cb1b52","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"01815b9407bb1ecc4be672bb0484bec742c69022","unresolved":false,"context_lines":[{"line_number":828,"context_line":"                ref.update(connector_info)"},{"line_number":829,"context_line":"                session.flush()"},{"line_number":830,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":831,"context_line":"            raise exception.VolumeConnectorValueAlreadyExists("},{"line_number":832,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":833,"context_line":"                value\u003dconnector_info.get(\u0027value\u0027))"},{"line_number":834,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aed3d3a_e773bf13","line":831,"range":{"start_line":831,"start_character":12,"end_line":831,"end_character":62},"updated":"2016-02-28 16:53:39.000000000","message":"I think you need to check which column has indicated duplicate entry through DBDuplicateEntry exception instead assuming it be of \u0027type\u0027/\u0027value\u0027 kind.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"af894ff8e60bd7039b86768017d3327b541539aa","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                                           node_id)"},{"line_number":373,"context_line":"            portgroup_query.delete()"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"            # Delete all tags attached to the node"},{"line_number":377,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":378,"context_line":"            tag_query.delete()"}],"source_content_type":"text/x-python","patch_set":19,"id":"dab17558_95abedd5","line":375,"updated":"2016-05-10 01:59:41.000000000","message":"Please remove this redundant blank line.","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                                           node_id)"},{"line_number":373,"context_line":"            portgroup_query.delete()"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"            # Delete all tags attached to the node"},{"line_number":377,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":378,"context_line":"            tag_query.delete()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_18f35f74","line":375,"in_reply_to":"dab17558_95abedd5","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":378,"context_line":"            tag_query.delete()"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"            connector_query \u003d model_query(models.VolumeConnector)"},{"line_number":381,"context_line":"            connector_query.filter_by(node_id\u003dnode_id)"},{"line_number":382,"context_line":"            connector_query.delete()"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_be543e21","line":381,"range":{"start_line":380,"start_character":12,"end_line":381,"end_character":54},"updated":"2016-05-19 08:30:28.000000000","message":"can be chained.\nnit: could you rename the variable to ``volume_connector_query``?","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":378,"context_line":"            tag_query.delete()"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"            connector_query \u003d model_query(models.VolumeConnector)"},{"line_number":381,"context_line":"            connector_query.filter_by(node_id\u003dnode_id)"},{"line_number":382,"context_line":"            connector_query.delete()"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_39b8ddc7","line":381,"range":{"start_line":380,"start_character":12,"end_line":381,"end_character":54},"in_reply_to":"bab6814e_be543e21","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"af894ff8e60bd7039b86768017d3327b541539aa","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            connector_query \u003d model_query(models.VolumeConnector)"},{"line_number":381,"context_line":"            connector_query.filter_by(node_id\u003dnode_id)"},{"line_number":382,"context_line":"            connector_query.delete()"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"            query.delete()"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"dab17558_35832158","line":383,"updated":"2016-05-10 01:59:41.000000000","message":"ditto","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            connector_query \u003d model_query(models.VolumeConnector)"},{"line_number":381,"context_line":"            connector_query.filter_by(node_id\u003dnode_id)"},{"line_number":382,"context_line":"            connector_query.delete()"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"            query.delete()"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_98ff4f33","line":383,"in_reply_to":"dab17558_35832158","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            if count \u003d\u003d 0:"},{"line_number":783,"context_line":"                raise exception.NodeNotFound(node_id)"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    def _check_node_exists(self, node_id):"},{"line_number":787,"context_line":"        if not model_query(models.Node).filter_by(id\u003dnode_id).scalar():"},{"line_number":788,"context_line":"            raise exception.NodeNotFound(node\u003dnode_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_fe07e67e","line":785,"updated":"2016-05-19 08:30:28.000000000","message":"ditto as above","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            if count \u003d\u003d 0:"},{"line_number":783,"context_line":"                raise exception.NodeNotFound(node_id)"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    def _check_node_exists(self, node_id):"},{"line_number":787,"context_line":"        if not model_query(models.Node).filter_by(id\u003dnode_id).scalar():"},{"line_number":788,"context_line":"            raise exception.NodeNotFound(node\u003dnode_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_d8a39741","line":785,"in_reply_to":"bab6814e_fe07e67e","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                                         marker\u003dNone, sort_key\u003dNone,"},{"line_number":864,"context_line":"                                         sort_dir\u003dNone):"},{"line_number":865,"context_line":"        query \u003d model_query(models.VolumeConnector)"},{"line_number":866,"context_line":"        query \u003d query.filter_by(node_id\u003dnode_id)"},{"line_number":867,"context_line":"        return _paginate_query(models.VolumeConnector, limit, marker,"},{"line_number":868,"context_line":"                               sort_key, sort_dir, query)"},{"line_number":869,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_3ef7aef6","line":866,"range":{"start_line":866,"start_character":8,"end_line":866,"end_character":48},"updated":"2016-05-19 08:30:28.000000000","message":"can\u0027t this be chained as well like?:\n\n  query \u003d model_query(models.VolumeConnector).filter_by(node_id\u003dnode_id)","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                                         marker\u003dNone, sort_key\u003dNone,"},{"line_number":864,"context_line":"                                         sort_dir\u003dNone):"},{"line_number":865,"context_line":"        query \u003d model_query(models.VolumeConnector)"},{"line_number":866,"context_line":"        query \u003d query.filter_by(node_id\u003dnode_id)"},{"line_number":867,"context_line":"        return _paginate_query(models.VolumeConnector, limit, marker,"},{"line_number":868,"context_line":"                               sort_key, sort_dir, query)"},{"line_number":869,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_53aca89e","line":866,"range":{"start_line":866,"start_character":8,"end_line":866,"end_character":48},"in_reply_to":"bab6814e_3ef7aef6","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                               sort_key, sort_dir, query)"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"    def create_volume_connector(self, connector_info):"},{"line_number":871,"context_line":"        if not connector_info.get(\u0027uuid\u0027):"},{"line_number":872,"context_line":"            connector_info[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        connector \u003d models.VolumeConnector()"}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_bec43e5f","line":871,"range":{"start_line":871,"start_character":8,"end_line":871,"end_character":42},"updated":"2016-05-19 08:30:28.000000000","message":"Instead, this one enhances readability:\n\n  if \u0027uuid\u0027 not in connector_info:\n    ...","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                               sort_key, sort_dir, query)"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"    def create_volume_connector(self, connector_info):"},{"line_number":871,"context_line":"        if not connector_info.get(\u0027uuid\u0027):"},{"line_number":872,"context_line":"            connector_info[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        connector \u003d models.VolumeConnector()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_f3ef94e6","line":871,"range":{"start_line":871,"start_character":8,"end_line":871,"end_character":42},"in_reply_to":"bab6814e_bec43e5f","updated":"2016-06-14 14:32:17.000000000","message":"Done","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5d6667c9d004d8bb68ef343b3a1b35a8796aac2b","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":389,"context_line":"            tag_query.delete()"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"            connector_connector_query \u003d model_query("},{"line_number":392,"context_line":"                models.VolumeConnector).filter_by(node_id\u003dnode_id)"},{"line_number":393,"context_line":"            connector_connector_query.delete()"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_81af4093","line":391,"updated":"2016-07-19 20:32:22.000000000","message":"nit: The formatting of this is a little hard to read.","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"b2420d284d4e0f77c4074e49984e5beaf8122cb1","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":386,"context_line":"            tag_query.delete()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"            connector_connector_query \u003d model_query("},{"line_number":389,"context_line":"                models.VolumeConnector).filter_by(node_id\u003dnode_id)"},{"line_number":390,"context_line":"            connector_connector_query.delete()"},{"line_number":391,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"dada55a8_b5dc7947","line":388,"range":{"start_line":388,"start_character":12,"end_line":388,"end_character":37},"updated":"2016-07-24 11:09:34.000000000","message":"nit: \u0027volume_connector_query\u0027 would be better.","commit_id":"b67cf66b321ee4b108ece0ab039ef395bb5c22e2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"2e2c1975fa92d6689484ae2fe270fa40b092f088","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            tag_query \u003d model_query(models.NodeTag).filter_by(node_id\u003dnode_id)"},{"line_number":386,"context_line":"            tag_query.delete()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"            connector_connector_query \u003d model_query("},{"line_number":389,"context_line":"                models.VolumeConnector).filter_by(node_id\u003dnode_id)"},{"line_number":390,"context_line":"            connector_connector_query.delete()"},{"line_number":391,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"dada55a8_831ee809","line":388,"range":{"start_line":388,"start_character":12,"end_line":388,"end_character":37},"in_reply_to":"dada55a8_b5dc7947","updated":"2016-07-26 18:43:01.000000000","message":"Done","commit_id":"b67cf66b321ee4b108ece0ab039ef395bb5c22e2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":881,"context_line":"        return _paginate_query(models.VolumeConnector, limit, marker,"},{"line_number":882,"context_line":"                               sort_key, sort_dir)"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":885,"context_line":"        query \u003d model_query(models.VolumeConnector).filter_by(id\u003dconnector_id)"},{"line_number":886,"context_line":"        try:"},{"line_number":887,"context_line":"            return query.one()"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_58d604c4","line":884,"updated":"2016-11-22 20:51:12.000000000","message":"ditto. s/connector_id/id/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":881,"context_line":"        return _paginate_query(models.VolumeConnector, limit, marker,"},{"line_number":882,"context_line":"                               sort_key, sort_dir)"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    def get_volume_connector_by_id(self, connector_id):"},{"line_number":885,"context_line":"        query \u003d model_query(models.VolumeConnector).filter_by(id\u003dconnector_id)"},{"line_number":886,"context_line":"        try:"},{"line_number":887,"context_line":"            return query.one()"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_40b00dde","line":884,"in_reply_to":"7a77a97e_58d604c4","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":922,"context_line":"                    uuid\u003dconnector_info[\u0027uuid\u0027])"},{"line_number":923,"context_line":"            return connector"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":926,"context_line":"        if \u0027uuid\u0027 in connector_info:"},{"line_number":927,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Volume Connector.\")"},{"line_number":928,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_a2ec422a","line":925,"updated":"2016-11-22 20:51:12.000000000","message":"s/connector_id/id/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":922,"context_line":"                    uuid\u003dconnector_info[\u0027uuid\u0027])"},{"line_number":923,"context_line":"            return connector"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"    def update_volume_connector(self, connector_id, connector_info):"},{"line_number":926,"context_line":"        if \u0027uuid\u0027 in connector_info:"},{"line_number":927,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Volume Connector.\")"},{"line_number":928,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_60034974","line":925,"in_reply_to":"7a77a97e_a2ec422a","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":930,"context_line":"        try:"},{"line_number":931,"context_line":"            with _session_for_write() as session:"},{"line_number":932,"context_line":"                query \u003d model_query(models.VolumeConnector)"},{"line_number":933,"context_line":"                query \u003d add_identity_filter(query, connector_id)"},{"line_number":934,"context_line":"                ref \u003d query.one()"},{"line_number":935,"context_line":"                ref.update(connector_info)"},{"line_number":936,"context_line":"                session.flush()"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_2fc4f590","line":933,"updated":"2016-11-23 01:47:34.000000000","message":"This concerns me a bit. this \u0027connector_id\u0027 -- is it meant to be the ID only, or can it be the UUID as well? Because add_identity_filter() handles both an int and a UUID.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":930,"context_line":"        try:"},{"line_number":931,"context_line":"            with _session_for_write() as session:"},{"line_number":932,"context_line":"                query \u003d model_query(models.VolumeConnector)"},{"line_number":933,"context_line":"                query \u003d add_identity_filter(query, connector_id)"},{"line_number":934,"context_line":"                ref \u003d query.one()"},{"line_number":935,"context_line":"                ref.update(connector_info)"},{"line_number":936,"context_line":"                session.flush()"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_7bce9c84","line":933,"in_reply_to":"5a74a57a_2fc4f590","updated":"2016-11-23 14:38:25.000000000","message":"I\u0027m going to go out on a limb and say it should always be the ID value.  That may mean that the RPC patches require some adjustment, but I think that is fine.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":937,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":938,"context_line":"            raise exception.VolumeConnectorConnectorIdAlreadyExists("},{"line_number":939,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":940,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027))"},{"line_number":941,"context_line":"        except NoResultFound:"},{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"},{"line_number":943,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_2247521e","line":940,"updated":"2016-11-22 20:51:12.000000000","message":"Hmm. That is going to be a strange exception msg if both type \u0026 connector_id aren\u0027t available :-(","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":937,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":938,"context_line":"            raise exception.VolumeConnectorConnectorIdAlreadyExists("},{"line_number":939,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":940,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027))"},{"line_number":941,"context_line":"        except NoResultFound:"},{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"},{"line_number":943,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_db2c10ae","line":940,"in_reply_to":"5a74a57a_d7622e16","updated":"2016-11-23 14:38:25.000000000","message":"That makes sense if someone were to try and blank out one or both of the fields... except we can\u0027t ref[\u0027type\u0027] can\u0027t be fulfilled if the session has closed.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"567a9e5c51816d0b128f2d1cc3081b2b71960d29","unresolved":false,"context_lines":[{"line_number":937,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":938,"context_line":"            raise exception.VolumeConnectorConnectorIdAlreadyExists("},{"line_number":939,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":940,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027))"},{"line_number":941,"context_line":"        except NoResultFound:"},{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"},{"line_number":943,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_d7622e16","line":940,"in_reply_to":"7a77a97e_2247521e","updated":"2016-11-23 10:23:55.000000000","message":"++, can we do connector_info.get(\u0027type\u0027, ref[\u0027type\u0027])?","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":937,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":938,"context_line":"            raise exception.VolumeConnectorConnectorIdAlreadyExists("},{"line_number":939,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":940,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027))"},{"line_number":941,"context_line":"        except NoResultFound:"},{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"},{"line_number":943,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_1b65a844","line":940,"in_reply_to":"7a77a97e_2247521e","updated":"2016-11-23 14:38:25.000000000","message":"They are mandatory fields data model wise, so I don\u0027t see why we wouldn\u0027t have them...","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"599c4ea07cea223f6a32b1473ed0443ccf3a77a9","unresolved":false,"context_lines":[{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"},{"line_number":943,"context_line":"        return ref"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":946,"context_line":"        with _session_for_write():"},{"line_number":947,"context_line":"            query \u003d model_query(models.VolumeConnector)"},{"line_number":948,"context_line":"            query \u003d add_identity_filter(query, connector_id)"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_42ba8e24","line":945,"updated":"2016-11-22 20:51:12.000000000","message":"s/connector_id/id/","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"},{"line_number":943,"context_line":"        return ref"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":946,"context_line":"        with _session_for_write():"},{"line_number":947,"context_line":"            query \u003d model_query(models.VolumeConnector)"},{"line_number":948,"context_line":"            query \u003d add_identity_filter(query, connector_id)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_b655abc7","line":945,"in_reply_to":"7a77a97e_42ba8e24","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":945,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":946,"context_line":"        with _session_for_write():"},{"line_number":947,"context_line":"            query \u003d model_query(models.VolumeConnector)"},{"line_number":948,"context_line":"            query \u003d add_identity_filter(query, connector_id)"},{"line_number":949,"context_line":"            count \u003d query.delete()"},{"line_number":950,"context_line":"            if count \u003d\u003d 0:"},{"line_number":951,"context_line":"                raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_af8e4525","line":948,"updated":"2016-11-23 01:47:34.000000000","message":"ditto, is \u0027connector_id\u0027 an ID or a UUID?","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":945,"context_line":"    def destroy_volume_connector(self, connector_id):"},{"line_number":946,"context_line":"        with _session_for_write():"},{"line_number":947,"context_line":"            query \u003d model_query(models.VolumeConnector)"},{"line_number":948,"context_line":"            query \u003d add_identity_filter(query, connector_id)"},{"line_number":949,"context_line":"            count \u003d query.delete()"},{"line_number":950,"context_line":"            if count \u003d\u003d 0:"},{"line_number":951,"context_line":"                raise exception.VolumeConnectorNotFound(connector\u003dconnector_id)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_160adfd2","line":948,"in_reply_to":"5a74a57a_af8e4525","updated":"2016-11-23 14:38:25.000000000","message":"Standardizing on ID, since it could also be a UUID.  Truthfully, I think it comes down to if we want pretty usable logs, we likely ought to use UUID, as much as using ID would keep things strait forward.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":922,"context_line":"                    uuid\u003dconnector_info[\u0027uuid\u0027])"},{"line_number":923,"context_line":"            return connector"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"    def update_volume_connector(self, id, connector_info):"},{"line_number":926,"context_line":"        if \u0027uuid\u0027 in connector_info:"},{"line_number":927,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Volume Connector.\")"},{"line_number":928,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_4d183d85","line":925,"updated":"2016-11-23 15:37:44.000000000","message":"s/id/ident/\n\nsee my comment in db/api.py","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cecd3c26d768537d6c941332ace52dedb3beea72","unresolved":false,"context_lines":[{"line_number":935,"context_line":"                ref.update(connector_info)"},{"line_number":936,"context_line":"                session.flush()"},{"line_number":937,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":938,"context_line":"            raise exception.VolumeConnectorConnectorTypeAlreadyExists("},{"line_number":939,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":940,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027))"},{"line_number":941,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_b303f472","line":938,"updated":"2016-11-23 16:00:43.000000000","message":"I think we can improve on this. The user may have changed one of the following:\n1. changed type only\n2. changed connector ID only\n3. changed both type and connector ID\n\nWe don\u0027t have information about the volume connector; just what they wanted to change. So we need the msg to be worded appropriately. Maybe we should just create the msg here. Something like:\n    type \u003d connector_info.get(\u0027type\u0027)\n    connector_id \u003d connector_info.get(\u0027connector_id\u0027)\n    fields \u003d []\n    if type:\n        fields.append(\u0027type \"%s\"\u0027 % type)\n    if connector_id: \n        fields.append(\u0027connector ID \"%s\"\u0027 % connector_id)\n    msg \u003d _(\u0027A volume connector with %s already exists\u0027 % \u0027 and \u0027.join(fields))\n    raise ...","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":935,"context_line":"                ref.update(connector_info)"},{"line_number":936,"context_line":"                session.flush()"},{"line_number":937,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":938,"context_line":"            raise exception.VolumeConnectorConnectorTypeAlreadyExists("},{"line_number":939,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027),"},{"line_number":940,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027))"},{"line_number":941,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_c7f6e1d6","line":938,"in_reply_to":"5a74a57a_b303f472","updated":"2016-11-23 19:06:30.000000000","message":"That actually WFM, I was thinking of doing something similar so we could always have the value.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":942,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003did)"},{"line_number":943,"context_line":"        return ref"},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    def destroy_volume_connector(self, id):"},{"line_number":946,"context_line":"        with _session_for_write():"},{"line_number":947,"context_line":"            query \u003d model_query(models.VolumeConnector)"},{"line_number":948,"context_line":"            query \u003d add_identity_filter(query, id)"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_2d04e115","line":945,"updated":"2016-11-23 15:37:44.000000000","message":"s/id/ident/","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"431f93d2f2344c9357381298d431d4119f9a67d4","unresolved":false,"context_lines":[{"line_number":881,"context_line":"        return _paginate_query(models.VolumeConnector, limit, marker,"},{"line_number":882,"context_line":"                               sort_key, sort_dir)"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    def get_volume_connector_by_id(self, ident):"},{"line_number":885,"context_line":"        query \u003d model_query(models.VolumeConnector).filter_by(id\u003dident)"},{"line_number":886,"context_line":"        try:"},{"line_number":887,"context_line":"            return query.one()"}],"source_content_type":"text/x-python","patch_set":57,"id":"5a74a57a_1623a8be","line":884,"updated":"2016-11-23 22:38:31.000000000","message":"you\u0027re going to hate me, but this is really id. Not UUID, that is handled by get_volume_connector_by_uuid() below.\n\nI did think of merging the two but I think this pattern follows existing patterns. Which isn\u0027t a reason for not merging but I wasn\u0027t sure if I would be asking too much to merge them, nor what the ramifications were (in terms of other changes) with such a merge.","commit_id":"1750621f31e7feae66e0d4a295c488123f45c2c3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"358c6f87403c2f139e9fc8908724b6ce851f3e13","unresolved":false,"context_lines":[{"line_number":881,"context_line":"        return _paginate_query(models.VolumeConnector, limit, marker,"},{"line_number":882,"context_line":"                               sort_key, sort_dir)"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    def get_volume_connector_by_id(self, ident):"},{"line_number":885,"context_line":"        query \u003d model_query(models.VolumeConnector).filter_by(id\u003dident)"},{"line_number":886,"context_line":"        try:"},{"line_number":887,"context_line":"            return query.one()"}],"source_content_type":"text/x-python","patch_set":57,"id":"5a74a57a_9d042bc1","line":884,"in_reply_to":"5a74a57a_1623a8be","updated":"2016-11-24 01:46:24.000000000","message":"done","commit_id":"1750621f31e7feae66e0d4a295c488123f45c2c3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"431f93d2f2344c9357381298d431d4119f9a67d4","unresolved":false,"context_lines":[{"line_number":940,"context_line":"            raise exception.VolumeConnectorConnectorTypeAlreadyExists("},{"line_number":941,"context_line":"                type\u003dconnector_info.get(\u0027type\u0027, orig_type),"},{"line_number":942,"context_line":"                connector_id\u003dconnector_info.get(\u0027connector_id\u0027,"},{"line_number":943,"context_line":"                                                orig_connector_id))"},{"line_number":944,"context_line":"        except NoResultFound:"},{"line_number":945,"context_line":"            raise exception.VolumeConnectorNotFound(connector\u003dident)"},{"line_number":946,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":57,"id":"5a74a57a_a1046c15","line":943,"updated":"2016-11-23 22:38:31.000000000","message":"nice!","commit_id":"1750621f31e7feae66e0d4a295c488123f45c2c3"}],"ironic/db/sqlalchemy/models.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    __tablename__ \u003d \u0027volume_connectors\u0027"},{"line_number":210,"context_line":"    __table_args__ \u003d ("},{"line_number":211,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_volumeconnector0uuid\u0027),"},{"line_number":212,"context_line":"        table_args())"},{"line_number":213,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":214,"context_line":"    uuid \u003d Column(String(36))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_0856af05","line":211,"updated":"2015-08-21 08:09:32.000000000","message":"If we had (type, value) as a unique constraint, then we should be having it here.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    __tablename__ \u003d \u0027volume_connectors\u0027"},{"line_number":210,"context_line":"    __table_args__ \u003d ("},{"line_number":211,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_volumeconnector0uuid\u0027),"},{"line_number":212,"context_line":"        table_args())"},{"line_number":213,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":214,"context_line":"    uuid \u003d Column(String(36))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_7644de48","line":211,"in_reply_to":"fa1b9901_0856af05","updated":"2015-08-21 13:01:26.000000000","message":"OK, will update.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":214,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":215,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":216,"context_line":"    type \u003d Column(String(5))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    # Note(smoriya): We store iqn, ip, mac, wwnn or wwpn here. The maximum"},{"line_number":219,"context_line":"    #                length of iqn is limited to 223 in RFC 7143"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_68a16bf7","line":216,"updated":"2015-08-21 08:09:32.000000000","message":"Let\u0027s make this 255 please. We couldn\u0027t find a reasonable default for driver name and we fixed it as 255 in the last meeting.  I think it\u0027s a similar case here.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":214,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":215,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":216,"context_line":"    type \u003d Column(String(5))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    # Note(smoriya): We store iqn, ip, mac, wwnn or wwpn here. The maximum"},{"line_number":219,"context_line":"    #                length of iqn is limited to 223 in RFC 7143"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_d555aff9","line":216,"in_reply_to":"fa1b9901_68a16bf7","updated":"2015-08-21 13:01:26.000000000","message":"Done","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"404532b17eb41029ed94112856105719901ed2af","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    # Note(smoriya): We store iqn, ip, mac, wwnn or wwpn here. The maximum"},{"line_number":219,"context_line":"    #                length of iqn is limited to 223 in RFC 7143"},{"line_number":220,"context_line":"    value \u003d Column(String(223))"},{"line_number":221,"context_line":"    extra \u003d Column(JSONEncodedDict)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_e8ad7be9","line":220,"updated":"2015-08-21 08:09:32.000000000","message":"Ditto as above, let\u0027s just make it 255 please. iqn is one of the example that we can find.","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"79d30f14e3b4d61f8c5164cb3f36b2866ff07263","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    # Note(smoriya): We store iqn, ip, mac, wwnn or wwpn here. The maximum"},{"line_number":219,"context_line":"    #                length of iqn is limited to 223 in RFC 7143"},{"line_number":220,"context_line":"    value \u003d Column(String(223))"},{"line_number":221,"context_line":"    extra \u003d Column(JSONEncodedDict)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_3553cb18","line":220,"in_reply_to":"fa1b9901_e8ad7be9","updated":"2015-08-21 13:01:26.000000000","message":"Done","commit_id":"85fadebd1d7d52622b93855d8b9e264daa25d647"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"a94188d8fc2838fd9cd200422f8cc843ab3a9764","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":212,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":213,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":214,"context_line":"    type \u003d Column(String(64))"},{"line_number":215,"context_line":"    value \u003d Column(String(255))"},{"line_number":216,"context_line":"    extra \u003d Column(db_types.JsonEncodedDict)"}],"source_content_type":"text/x-python","patch_set":19,"id":"bab6814e_0378958e","line":214,"range":{"start_line":214,"start_character":4,"end_line":214,"end_character":29},"updated":"2016-05-19 08:30:28.000000000","message":"++ ^^^\nfyr: http://docs.sqlalchemy.org/en/latest/core/type_basics.html?highlight\u003denum#sqlalchemy.types.Enum\n\nOf course, the db needs to support the native enum type.","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"af894ff8e60bd7039b86768017d3327b541539aa","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":212,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":213,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":214,"context_line":"    type \u003d Column(String(64))"},{"line_number":215,"context_line":"    value \u003d Column(String(255))"},{"line_number":216,"context_line":"    extra \u003d Column(db_types.JsonEncodedDict)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dab17558_9522cdff","line":214,"range":{"start_line":214,"start_character":4,"end_line":214,"end_character":29},"updated":"2016-05-10 01:59:41.000000000","message":"Shouldn\u0027t we need an Enum here to be consistent with the spec.","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":212,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":213,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":214,"context_line":"    type \u003d Column(String(64))"},{"line_number":215,"context_line":"    value \u003d Column(String(255))"},{"line_number":216,"context_line":"    extra \u003d Column(db_types.JsonEncodedDict)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_6ec9f625","line":214,"range":{"start_line":214,"start_character":4,"end_line":214,"end_character":29},"in_reply_to":"bab6814e_0378958e","updated":"2016-06-14 14:32:17.000000000","message":"Not sure we can do it now that I look at it.  MySQL and Postgres support Enum type, but not SQLite. I\u0027ve -1\u0027ed and noted this on the spec.","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":221,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":222,"context_line":"    type \u003d Column(String(64))"},{"line_number":223,"context_line":"    value \u003d Column(String(255))"},{"line_number":224,"context_line":"    extra \u003d Column(db_types.JsonEncodedDict)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_214bf4ca","line":223,"range":{"start_line":223,"start_character":4,"end_line":223,"end_character":9},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":221,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":222,"context_line":"    type \u003d Column(String(64))"},{"line_number":223,"context_line":"    value \u003d Column(String(255))"},{"line_number":224,"context_line":"    extra \u003d Column(db_types.JsonEncodedDict)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_cc1e48ba","line":223,"range":{"start_line":223,"start_character":4,"end_line":223,"end_character":9},"in_reply_to":"dada55a8_214bf4ca","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7112484266db108b6d9cd6a26396823b589138fb","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    __tablename__ \u003d \u0027volume_connectors\u0027"},{"line_number":210,"context_line":"    __table_args__ \u003d ("},{"line_number":211,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_volumeconnector0uuid\u0027),"},{"line_number":212,"context_line":"        schema.UniqueConstraint("},{"line_number":213,"context_line":"            \u0027type\u0027,"},{"line_number":214,"context_line":"            \u0027connector_id\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_bb38863e","line":211,"range":{"start_line":211,"start_character":51,"end_line":211,"end_character":66},"updated":"2016-07-30 14:54:12.000000000","message":"\u0027volumeconnectors\u0027 would be better.\nOther constraints use plural.","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"4df919e73d215681032f7ca3ceff11eda3cc9303","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    __tablename__ \u003d \u0027volume_connectors\u0027"},{"line_number":210,"context_line":"    __table_args__ \u003d ("},{"line_number":211,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_volumeconnector0uuid\u0027),"},{"line_number":212,"context_line":"        schema.UniqueConstraint("},{"line_number":213,"context_line":"            \u0027type\u0027,"},{"line_number":214,"context_line":"            \u0027connector_id\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_27372200","line":211,"range":{"start_line":211,"start_character":51,"end_line":211,"end_character":66},"in_reply_to":"bacf61ea_bb38863e","updated":"2016-08-01 17:47:12.000000000","message":"Done","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7112484266db108b6d9cd6a26396823b589138fb","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        schema.UniqueConstraint("},{"line_number":213,"context_line":"            \u0027type\u0027,"},{"line_number":214,"context_line":"            \u0027connector_id\u0027,"},{"line_number":215,"context_line":"            name\u003d\u0027uniq_volumeconnector0type0connector_id\u0027),"},{"line_number":216,"context_line":"        table_args())"},{"line_number":217,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":218,"context_line":"    uuid \u003d Column(String(36))"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_1b4272ae","line":215,"range":{"start_line":215,"start_character":23,"end_line":215,"end_character":38},"updated":"2016-07-30 14:54:12.000000000","message":"ditto","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"4df919e73d215681032f7ca3ceff11eda3cc9303","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        schema.UniqueConstraint("},{"line_number":213,"context_line":"            \u0027type\u0027,"},{"line_number":214,"context_line":"            \u0027connector_id\u0027,"},{"line_number":215,"context_line":"            name\u003d\u0027uniq_volumeconnector0type0connector_id\u0027),"},{"line_number":216,"context_line":"        table_args())"},{"line_number":217,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":218,"context_line":"    uuid \u003d Column(String(36))"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_673d9adc","line":215,"range":{"start_line":215,"start_character":23,"end_line":215,"end_character":38},"in_reply_to":"bacf61ea_1b4272ae","updated":"2016-08-01 17:47:12.000000000","message":"Done","commit_id":"332272321c921dda4c9f8c8a2972dd4648126fc2"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"02d2e8eec6fd868a256ab5577acf8a8cb3ca6ea7","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        table_args())"},{"line_number":218,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":219,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":220,"context_line":"    node_id \u003d Column(Integer, ForeignKey(\u0027nodes.id\u0027), nullable\u003dTrue)"},{"line_number":221,"context_line":"    type \u003d Column(String(32))"},{"line_number":222,"context_line":"    connector_id \u003d Column(String(255))"},{"line_number":223,"context_line":"    extra \u003d Column(db_types.JsonEncodedDict)"}],"source_content_type":"text/x-python","patch_set":48,"id":"ba5da102_5f01cd38","line":220,"range":{"start_line":220,"start_character":54,"end_line":220,"end_character":67},"updated":"2016-11-04 16:31:29.000000000","message":"nit: I think this is True by default http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Column.params.nullable\n\nDoesn\u0027t really matter since there area bunch of node_id\u0027s that are specified explicitly as nullable in this file, though","commit_id":"873d4678b777bea13043989a46a05cd8b5220555"}],"ironic/tests/unit/db/sqlalchemy/test_migrations.py":[{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"6923d96017839e4e10ef614b42b59bfce0707b2f","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        tag \u003d node_tags.select(node_tags.c.node_id \u003d\u003d \u0027123\u0027).execute().first()"},{"line_number":408,"context_line":"        self.assertEqual(\u0027tag1\u0027, tag[\u0027tag\u0027])"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def _check_4755b243345(self, engine, data):"},{"line_number":411,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":412,"context_line":"        bigstring \u003d \u0027a\u0027 * 255"},{"line_number":413,"context_line":"        uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_ef02df08","line":410,"range":{"start_line":410,"start_character":15,"end_line":410,"end_character":26},"updated":"2016-02-04 09:58:00.000000000","message":"s/4755b243345/daa1ba02d98/","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"f8b5b20c255084dc9cf8180ab56d61a4d1f861d8","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        bigstring \u003d \u0027a\u0027 * 255"},{"line_number":413,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":414,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: bigstring,"},{"line_number":415,"context_line":"                \u0027value\u0027: bigstring, \u0027extra\u0027: \u0027{}\u0027}"},{"line_number":416,"context_line":"        connectors.insert().execute(data)"},{"line_number":417,"context_line":"        connector \u003d connectors.select("},{"line_number":418,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_638716b6","line":415,"updated":"2015-12-04 10:40:09.000000000","message":"to be precise:\n\n  extra: {}","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"c4fe984ea9f89e86c66c6dec98f0ebdf5b808e8d","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        bigstring \u003d \u0027a\u0027 * 255"},{"line_number":413,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":414,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: bigstring,"},{"line_number":415,"context_line":"                \u0027value\u0027: bigstring, \u0027extra\u0027: \u0027{}\u0027}"},{"line_number":416,"context_line":"        connectors.insert().execute(data)"},{"line_number":417,"context_line":"        connector \u003d connectors.select("},{"line_number":418,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_8f035d0d","line":415,"in_reply_to":"5a5ae5dd_647856c5","updated":"2016-02-09 11:48:46.000000000","message":"This change causes error in the unittest. So I revert it.","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"6923d96017839e4e10ef614b42b59bfce0707b2f","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        bigstring \u003d \u0027a\u0027 * 255"},{"line_number":413,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":414,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: bigstring,"},{"line_number":415,"context_line":"                \u0027value\u0027: bigstring, \u0027extra\u0027: \u0027{}\u0027}"},{"line_number":416,"context_line":"        connectors.insert().execute(data)"},{"line_number":417,"context_line":"        connector \u003d connectors.select("},{"line_number":418,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_647856c5","line":415,"in_reply_to":"7a740942_638716b6","updated":"2016-02-04 09:58:00.000000000","message":"Done","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"f8b5b20c255084dc9cf8180ab56d61a4d1f861d8","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        self.assertEqual(bigstring, connector[\u0027type\u0027])"},{"line_number":420,"context_line":"        self.assertEqual(bigstring, connector[\u0027value\u0027])"},{"line_number":421,"context_line":"        self.assertEqual(1, connector[\u0027node_id\u0027])"},{"line_number":422,"context_line":"        self.assertEqual(\u0027{}\u0027, connector[\u0027extra\u0027])"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_upgrade_and_version(self):"},{"line_number":425,"context_line":"        with patch_with_engine(self.engine):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_43b1ba8e","line":422,"updated":"2015-12-04 10:40:09.000000000","message":"and here::\n\n  self.assertDictEqual({}, connector[\u0027extra\u0027])","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"c4fe984ea9f89e86c66c6dec98f0ebdf5b808e8d","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        self.assertEqual(bigstring, connector[\u0027type\u0027])"},{"line_number":420,"context_line":"        self.assertEqual(bigstring, connector[\u0027value\u0027])"},{"line_number":421,"context_line":"        self.assertEqual(1, connector[\u0027node_id\u0027])"},{"line_number":422,"context_line":"        self.assertEqual(\u0027{}\u0027, connector[\u0027extra\u0027])"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_upgrade_and_version(self):"},{"line_number":425,"context_line":"        with patch_with_engine(self.engine):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_2f082928","line":422,"in_reply_to":"5a5ae5dd_af0ce73b","updated":"2016-02-09 11:48:46.000000000","message":"ditto","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"6923d96017839e4e10ef614b42b59bfce0707b2f","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        self.assertEqual(bigstring, connector[\u0027type\u0027])"},{"line_number":420,"context_line":"        self.assertEqual(bigstring, connector[\u0027value\u0027])"},{"line_number":421,"context_line":"        self.assertEqual(1, connector[\u0027node_id\u0027])"},{"line_number":422,"context_line":"        self.assertEqual(\u0027{}\u0027, connector[\u0027extra\u0027])"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_upgrade_and_version(self):"},{"line_number":425,"context_line":"        with patch_with_engine(self.engine):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_af0ce73b","line":422,"in_reply_to":"7a740942_43b1ba8e","updated":"2016-02-04 09:58:00.000000000","message":"Done","commit_id":"29629110427019036af86d5c09840d0e3facf99d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def _check_daa1ba02d98(self, engine, data):"},{"line_number":418,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":419,"context_line":"        typestring \u003d \u0027a\u0027 * 64"},{"line_number":420,"context_line":"        valuestring \u003d \u0027a\u0027 * 255"},{"line_number":421,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":422,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_21e774b1","line":419,"range":{"start_line":419,"start_character":27,"end_line":419,"end_character":29},"updated":"2016-07-19 20:31:33.000000000","message":"should be 32 per the spec","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def _check_daa1ba02d98(self, engine, data):"},{"line_number":418,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":419,"context_line":"        typestring \u003d \u0027a\u0027 * 64"},{"line_number":420,"context_line":"        valuestring \u003d \u0027a\u0027 * 255"},{"line_number":421,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":422,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_ac1b14c9","line":419,"range":{"start_line":419,"start_character":27,"end_line":419,"end_character":29},"in_reply_to":"dada55a8_21e774b1","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":417,"context_line":"    def _check_daa1ba02d98(self, engine, data):"},{"line_number":418,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":419,"context_line":"        typestring \u003d \u0027a\u0027 * 64"},{"line_number":420,"context_line":"        valuestring \u003d \u0027a\u0027 * 255"},{"line_number":421,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":422,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"},{"line_number":423,"context_line":"                \u0027value\u0027: valuestring, \u0027extra\u0027: \u0027{}\u0027}"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_41f26870","line":420,"range":{"start_line":420,"start_character":8,"end_line":420,"end_character":19},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id_/ ?","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":417,"context_line":"    def _check_daa1ba02d98(self, engine, data):"},{"line_number":418,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":419,"context_line":"        typestring \u003d \u0027a\u0027 * 64"},{"line_number":420,"context_line":"        valuestring \u003d \u0027a\u0027 * 255"},{"line_number":421,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":422,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"},{"line_number":423,"context_line":"                \u0027value\u0027: valuestring, \u0027extra\u0027: \u0027{}\u0027}"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_0c7b40f6","line":420,"range":{"start_line":420,"start_character":8,"end_line":420,"end_character":19},"in_reply_to":"dada55a8_41f26870","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        valuestring \u003d \u0027a\u0027 * 255"},{"line_number":421,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":422,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"},{"line_number":423,"context_line":"                \u0027value\u0027: valuestring, \u0027extra\u0027: \u0027{}\u0027}"},{"line_number":424,"context_line":"        connectors.insert().execute(data)"},{"line_number":425,"context_line":"        connector \u003d connectors.select("},{"line_number":426,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_c1fe5837","line":423,"range":{"start_line":423,"start_character":17,"end_line":423,"end_character":22},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        valuestring \u003d \u0027a\u0027 * 255"},{"line_number":421,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":422,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"},{"line_number":423,"context_line":"                \u0027value\u0027: valuestring, \u0027extra\u0027: \u0027{}\u0027}"},{"line_number":424,"context_line":"        connectors.insert().execute(data)"},{"line_number":425,"context_line":"        connector \u003d connectors.select("},{"line_number":426,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_ec7fccdd","line":423,"range":{"start_line":423,"start_character":17,"end_line":423,"end_character":22},"in_reply_to":"dada55a8_c1fe5837","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        connector \u003d connectors.select("},{"line_number":426,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"},{"line_number":427,"context_line":"        self.assertEqual(typestring, connector[\u0027type\u0027])"},{"line_number":428,"context_line":"        self.assertEqual(valuestring, connector[\u0027value\u0027])"},{"line_number":429,"context_line":"        self.assertEqual(1, connector[\u0027node_id\u0027])"},{"line_number":430,"context_line":"        self.assertEqual(\u0027{}\u0027, connector[\u0027extra\u0027])"},{"line_number":431,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_c185b8ad","line":428,"range":{"start_line":428,"start_character":49,"end_line":428,"end_character":54},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id/","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        connector \u003d connectors.select("},{"line_number":426,"context_line":"            connectors.c.uuid \u003d\u003d uuid).execute().first()"},{"line_number":427,"context_line":"        self.assertEqual(typestring, connector[\u0027type\u0027])"},{"line_number":428,"context_line":"        self.assertEqual(valuestring, connector[\u0027value\u0027])"},{"line_number":429,"context_line":"        self.assertEqual(1, connector[\u0027node_id\u0027])"},{"line_number":430,"context_line":"        self.assertEqual(\u0027{}\u0027, connector[\u0027extra\u0027])"},{"line_number":431,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_4c81b8c2","line":428,"range":{"start_line":428,"start_character":49,"end_line":428,"end_character":54},"in_reply_to":"dada55a8_c185b8ad","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    def _check_daa1ba02d98(self, engine, data):"},{"line_number":551,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":552,"context_line":"        typestring \u003d \u0027a\u0027 * 32"},{"line_number":553,"context_line":"        connector_idstring \u003d \u0027a\u0027 * 255"},{"line_number":554,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":555,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a77a97e_a5a44cb9","line":552,"updated":"2016-11-23 01:47:34.000000000","message":"So the following is a good test. But I was actually expecting to see something along the lines of _check_5ea1b0d310e() (L420-441)","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    def _check_daa1ba02d98(self, engine, data):"},{"line_number":551,"context_line":"        connectors \u003d db_utils.get_table(engine, \u0027volume_connectors\u0027)"},{"line_number":552,"context_line":"        typestring \u003d \u0027a\u0027 * 32"},{"line_number":553,"context_line":"        connector_idstring \u003d \u0027a\u0027 * 255"},{"line_number":554,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":555,"context_line":"        data \u003d {\u0027uuid\u0027: uuid, \u0027node_id\u0027: 1, \u0027type\u0027: typestring,"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_c09fbd5d","line":552,"in_reply_to":"7a77a97e_a5a44cb9","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"}],"ironic/tests/unit/db/test_nodes.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        self.assertRaises(exception.PortNotFound,"},{"line_number":329,"context_line":"                          self.dbapi.get_port_by_id, port.id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def test_tags_get_destroyed_after_destroying_a_node(self):"},{"line_number":333,"context_line":"        node \u003d utils.create_test_node()"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_b9416dab","line":331,"updated":"2016-06-14 14:32:17.000000000","message":"Excess line, removing.","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d859438c5ed50115e8da98b1e807c652d22d0297","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        self.assertRaises(exception.VolumeConnectorNotFound,"},{"line_number":368,"context_line":"                          self.dbapi.get_volume_connector_by_id, connector.id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def test_update_node(self):"},{"line_number":372,"context_line":"        node \u003d utils.create_test_node()"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7aa08908_1917e1a3","line":370,"updated":"2016-06-14 14:32:17.000000000","message":"Excess line, removing","commit_id":"6b4fd965d2244e42edd40d6fbdd20d11d32bdb0b"}],"ironic/tests/unit/db/test_volume_connectors.py":[{"author":{"_account_id":17270,"name":"Sergii Turivnyi","email":"sturivnyi@mirantis.com","username":"sturivnyi"},"change_message_id":"41573dbf60fd224fc41b264e2864a5999ca318e6","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DbVolumeConnectorTestCase(base.DbTestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        # This method creates a volume_connector for every test and"},{"line_number":29,"context_line":"        # replaces a test for creating a volume_connector."}],"source_content_type":"text/x-python","patch_set":10,"id":"9a8ffd7b_0a7018db","line":26,"updated":"2015-11-27 12:45:05.000000000","message":"Please, add docstring here","commit_id":"8b16b164f4add783be34e0687a61be8da7a2d966"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.connector \u003d db_utils.create_test_volume_connector("},{"line_number":33,"context_line":"            node_id\u003dself.node.id, type\u003d\u0027test\u0027, value\u003d\u0027test-value\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_get_volume_connector_by_id(self):"},{"line_number":36,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":37,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.value, res.value)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_755bd52e","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":39},"updated":"2016-03-17 09:15:06.000000000","message":"missing test case for volume connector doesn\u0027t exist.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.connector \u003d db_utils.create_test_volume_connector("},{"line_number":33,"context_line":"            node_id\u003dself.node.id, type\u003d\u0027test\u0027, value\u003d\u0027test-value\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_get_volume_connector_by_id(self):"},{"line_number":36,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":37,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.value, res.value)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_6fe188fe","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":39},"in_reply_to":"1af94dfe_755bd52e","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.value, res.value)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":41,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"},{"line_number":42,"context_line":"        self.assertEqual(self.connector.id, res.id)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_d542a93d","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":41},"updated":"2016-03-17 09:15:06.000000000","message":"ditto","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.value, res.value)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":41,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"},{"line_number":42,"context_line":"        self.assertEqual(self.connector.id, res.id)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_cfe6dc15","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":41},"in_reply_to":"1af94dfe_d542a93d","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_get_volume_connector_list_sorted(self):"},{"line_number":59,"context_line":"        uuids \u003d []"},{"line_number":60,"context_line":"        for i in range(1, 6):"},{"line_number":61,"context_line":"            volume_connector \u003d db_utils.create_test_volume_connector("},{"line_number":62,"context_line":"                uuid\u003duuidutils.generate_uuid(),"},{"line_number":63,"context_line":"                type\u003d\u0027iqn\u0027,"},{"line_number":64,"context_line":"                value\u003d\u0027iqn.test-%s\u0027 % i)"},{"line_number":65,"context_line":"            uuids.append(six.text_type(volume_connector.uuid))"},{"line_number":66,"context_line":"        # Also add the uuid for the volume_connector created in setUp()"},{"line_number":67,"context_line":"        uuids.append(six.text_type(self.connector.uuid))"},{"line_number":68,"context_line":"        res \u003d self.dbapi.get_volume_connector_list(sort_key\u003d\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_1550915c","line":65,"range":{"start_line":60,"start_character":8,"end_line":65,"end_character":62},"updated":"2016-03-17 09:15:06.000000000","message":"I think it would be better to move this loop to Setup(), as it\u0027s duplicate in test_get_volume_connector_list() and test_get_volume_connector_list_sorted()","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_get_volume_connector_list_sorted(self):"},{"line_number":59,"context_line":"        uuids \u003d []"},{"line_number":60,"context_line":"        for i in range(1, 6):"},{"line_number":61,"context_line":"            volume_connector \u003d db_utils.create_test_volume_connector("},{"line_number":62,"context_line":"                uuid\u003duuidutils.generate_uuid(),"},{"line_number":63,"context_line":"                type\u003d\u0027iqn\u0027,"},{"line_number":64,"context_line":"                value\u003d\u0027iqn.test-%s\u0027 % i)"},{"line_number":65,"context_line":"            uuids.append(six.text_type(volume_connector.uuid))"},{"line_number":66,"context_line":"        # Also add the uuid for the volume_connector created in setUp()"},{"line_number":67,"context_line":"        uuids.append(six.text_type(self.connector.uuid))"},{"line_number":68,"context_line":"        res \u003d self.dbapi.get_volume_connector_list(sort_key\u003d\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_2fbe70d4","line":65,"range":{"start_line":60,"start_character":8,"end_line":65,"end_character":62},"in_reply_to":"1af94dfe_1550915c","updated":"2016-04-22 09:06:09.000000000","message":"OK, will do.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7967c0ea2a2e2abab053315953c2933f30335414","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def test_get_volume_connectors_by_node_id_that_does_not_exist(self):"},{"line_number":81,"context_line":"        self.assertEqual([], self.dbapi.get_volume_connectors_by_node_id(99))"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_destroy_volume_connector(self):"},{"line_number":84,"context_line":"        self.dbapi.destroy_volume_connector(self.connector.id)"},{"line_number":85,"context_line":"        self.assertRaises(exception.VolumeConnectorNotFound,"},{"line_number":86,"context_line":"                          self.dbapi.destroy_volume_connector,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_b5fefd35","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":37},"updated":"2016-03-17 09:15:06.000000000","message":"missing test case for destroying volume connector that does not exist.","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f6b54a3441fa2eb43c59449142cafc691012c2f7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def test_get_volume_connectors_by_node_id_that_does_not_exist(self):"},{"line_number":81,"context_line":"        self.assertEqual([], self.dbapi.get_volume_connectors_by_node_id(99))"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_destroy_volume_connector(self):"},{"line_number":84,"context_line":"        self.dbapi.destroy_volume_connector(self.connector.id)"},{"line_number":85,"context_line":"        self.assertRaises(exception.VolumeConnectorNotFound,"},{"line_number":86,"context_line":"                          self.dbapi.destroy_volume_connector,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_0fc8d473","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":37},"in_reply_to":"1af94dfe_b5fefd35","updated":"2016-04-22 09:06:09.000000000","message":"Done","commit_id":"e5675904540f2c35d6971d96d040d3440c20e522"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        super(DbVolumeConnectorTestCase, self).setUp()"},{"line_number":31,"context_line":"        self.node \u003d db_utils.create_test_node()"},{"line_number":32,"context_line":"        self.connector \u003d db_utils.create_test_volume_connector("},{"line_number":33,"context_line":"            node_id\u003dself.node.id, type\u003d\u0027test\u0027, value\u003d\u0027test-value\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_get_volume_connector_by_id(self):"},{"line_number":36,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_a4a6d20d","line":33,"range":{"start_line":33,"start_character":47,"end_line":33,"end_character":52},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id/g","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def test_get_volume_connector_by_id(self):"},{"line_number":36,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":37,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.value, res.value)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":41,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_84a90ee2","line":38,"range":{"start_line":38,"start_character":40,"end_line":38,"end_character":45},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_get_volume_connectors_by_node_id(self):"},{"line_number":76,"context_line":"        res \u003d self.dbapi.get_volume_connectors_by_node_id(self.node.id)"},{"line_number":77,"context_line":"        self.assertEqual(self.connector.type, res[0].type)"},{"line_number":78,"context_line":"        self.assertEqual(self.connector.value, res[0].value)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_get_volume_connectors_by_node_id_that_does_not_exist(self):"},{"line_number":81,"context_line":"        self.assertEqual([], self.dbapi.get_volume_connectors_by_node_id(99))"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_64ea1a11","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":45},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_get_volume_connectors_by_node_id(self):"},{"line_number":76,"context_line":"        res \u003d self.dbapi.get_volume_connectors_by_node_id(self.node.id)"},{"line_number":77,"context_line":"        self.assertEqual(self.connector.type, res[0].type)"},{"line_number":78,"context_line":"        self.assertEqual(self.connector.value, res[0].value)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_get_volume_connectors_by_node_id_that_does_not_exist(self):"},{"line_number":81,"context_line":"        self.assertEqual([], self.dbapi.get_volume_connectors_by_node_id(99))"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_a4f412f2","line":78,"range":{"start_line":78,"start_character":54,"end_line":78,"end_character":59},"updated":"2016-07-19 20:31:33.000000000","message":"ditto?","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                          self.connector.id)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_update_volume_connector(self):"},{"line_number":90,"context_line":"        old_value \u003d self.connector.value"},{"line_number":91,"context_line":"        new_value \u003d \u0027test-value-2\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.assertNotEqual(old_value, new_value)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_e4972a8e","line":90,"range":{"start_line":90,"start_character":35,"end_line":90,"end_character":40},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.assertNotEqual(old_value, new_value)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        res \u003d self.dbapi.update_volume_connector(self.connector.id,"},{"line_number":96,"context_line":"                                                 {\u0027value\u0027: new_value})"},{"line_number":97,"context_line":"        self.assertEqual(new_value, res.value)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_update_volume_connector_uuid(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_2492e29e","line":96,"range":{"start_line":96,"start_character":51,"end_line":96,"end_character":56},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def test_update_volume_connector_duplicated_type_value(self):"},{"line_number":106,"context_line":"        type \u003d self.connector.type"},{"line_number":107,"context_line":"        value1 \u003d self.connector.value"},{"line_number":108,"context_line":"        value2 \u003d \u0027test-value-2\u0027"},{"line_number":109,"context_line":"        volume_connector2 \u003d db_utils.create_test_volume_connector("},{"line_number":110,"context_line":"            uuid\u003duuidutils.generate_uuid(),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_8480ee47","line":107,"range":{"start_line":107,"start_character":32,"end_line":107,"end_character":37},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            uuid\u003duuidutils.generate_uuid(),"},{"line_number":111,"context_line":"            node_id\u003dself.node.id,"},{"line_number":112,"context_line":"            type\u003dtype,"},{"line_number":113,"context_line":"            value\u003dvalue2)"},{"line_number":114,"context_line":"        self.assertRaises(exception.VolumeConnectorValueAlreadyExists,"},{"line_number":115,"context_line":"                          self.dbapi.update_volume_connector,"},{"line_number":116,"context_line":"                          volume_connector2.id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_84ce2eb2","line":113,"range":{"start_line":113,"start_character":12,"end_line":113,"end_character":17},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.assertRaises(exception.VolumeConnectorValueAlreadyExists,"},{"line_number":115,"context_line":"                          self.dbapi.update_volume_connector,"},{"line_number":116,"context_line":"                          volume_connector2.id,"},{"line_number":117,"context_line":"                          {\u0027value\u0027: value1})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def test_create_volume_connector_duplicated_type_value(self):"},{"line_number":120,"context_line":"        self.assertRaises(exception.VolumeConnectorValueAlreadyExists,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_64d17a57","line":117,"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                          {\u0027value\u0027: value1})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def test_create_volume_connector_duplicated_type_value(self):"},{"line_number":120,"context_line":"        self.assertRaises(exception.VolumeConnectorValueAlreadyExists,"},{"line_number":121,"context_line":"                          db_utils.create_test_volume_connector,"},{"line_number":122,"context_line":"                          uuid\u003duuidutils.generate_uuid(),"},{"line_number":123,"context_line":"                          node_id\u003dself.node.id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_24e94215","line":120,"updated":"2016-07-19 20:31:33.000000000","message":"s/Value/ConnectorId/ ?","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                          uuid\u003duuidutils.generate_uuid(),"},{"line_number":123,"context_line":"                          node_id\u003dself.node.id,"},{"line_number":124,"context_line":"                          type\u003dself.connector.type,"},{"line_number":125,"context_line":"                          value\u003dself.connector.value)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test_create_volume_connector_duplicated_uuid(self):"},{"line_number":128,"context_line":"        self.assertRaises(exception.VolumeConnectorAlreadyExists,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_c4d94685","line":125,"range":{"start_line":125,"start_character":26,"end_line":125,"end_character":31},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                          uuid\u003dself.connector.uuid,"},{"line_number":131,"context_line":"                          node_id\u003dself.node.id,"},{"line_number":132,"context_line":"                          type\u003d\u0027test\u0027,"},{"line_number":133,"context_line":"                          value\u003d\u0027test-value-2\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_84458e18","line":133,"range":{"start_line":133,"start_character":26,"end_line":133,"end_character":31},"updated":"2016-07-19 20:31:33.000000000","message":"ditto","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        # This method creates a volume_connector for every test and"},{"line_number":29,"context_line":"        # replaces a test for creating a volume_connector."},{"line_number":30,"context_line":"        super(DbVolumeConnectorTestCase, self).setUp()"},{"line_number":31,"context_line":"        self.node \u003d db_utils.create_test_node()"},{"line_number":32,"context_line":"        self.connector \u003d db_utils.create_test_volume_connector("}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_751a4870","line":29,"updated":"2016-11-23 01:47:34.000000000","message":"what does the \u0027and replaces a test for creating a volume_connector\u0027 mean?\n\nOh, I see, db_utils.create_test_volume_connector() exercises the creation of the volume connector. I wouldn\u0027t say it tests it since it doesn\u0027t but I guess we can assume it creates it OK.\n\ni\u0027d reword this though, it seems confusing to me. Maybe note that since the connector is created here, there is no explicit test that tests that the creation of the connector succeeds? Unless it is clear to other people.\n\nAlthough honestly, it seems simple enough to add a few test_create_volume_connector() tests that will directly call self.dbapi.create_volume_connector(). One w/o node id specified; one w/o uuid, one with uuid.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def test_get_volume_connector_by_id(self):"},{"line_number":37,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":39,"context_line":"        self.assertEqual(self.connector.connector_id, res.connector_id)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":42,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_04bba073","line":39,"updated":"2016-11-23 01:47:34.000000000","message":"what about by a non-existing ID?","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def test_get_volume_connector_by_id(self):"},{"line_number":37,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":38,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":39,"context_line":"        self.assertEqual(self.connector.connector_id, res.connector_id)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":42,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_5111c1ab","line":39,"in_reply_to":"5a74a57a_04bba073","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":42,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"},{"line_number":43,"context_line":"        self.assertEqual(self.connector.id, res.id)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_get_volume_connector_list(self):"},{"line_number":46,"context_line":"        uuids \u003d []"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_44ad9830","line":43,"updated":"2016-11-23 01:47:34.000000000","message":"what about a non-existing UUID?","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":42,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"},{"line_number":43,"context_line":"        self.assertEqual(self.connector.id, res.id)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_get_volume_connector_list(self):"},{"line_number":46,"context_line":"        uuids \u003d []"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_117e69e4","line":43,"in_reply_to":"5a74a57a_44ad9830","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                connector_id\u003d\u0027iqn.test-%s\u0027 % i)"},{"line_number":52,"context_line":"            uuids.append(six.text_type(volume_connector.uuid))"},{"line_number":53,"context_line":"        # Also add the uuid for the volume connector created in setUp()"},{"line_number":54,"context_line":"        uuids.append(six.text_type(self.connector.uuid))"},{"line_number":55,"context_line":"        res \u003d self.dbapi.get_volume_connector_list()"},{"line_number":56,"context_line":"        res_uuids \u003d [r.uuid for r in res]"},{"line_number":57,"context_line":"        six.assertCountEqual(self, uuids, res_uuids)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_f5f738f3","line":54,"updated":"2016-11-23 01:47:34.000000000","message":"you could have just done this at line 46: uuids \u003d [six.text_type(self.connector.uuid)]","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                connector_id\u003d\u0027iqn.test-%s\u0027 % i)"},{"line_number":52,"context_line":"            uuids.append(six.text_type(volume_connector.uuid))"},{"line_number":53,"context_line":"        # Also add the uuid for the volume connector created in setUp()"},{"line_number":54,"context_line":"        uuids.append(six.text_type(self.connector.uuid))"},{"line_number":55,"context_line":"        res \u003d self.dbapi.get_volume_connector_list()"},{"line_number":56,"context_line":"        res_uuids \u003d [r.uuid for r in res]"},{"line_number":57,"context_line":"        six.assertCountEqual(self, uuids, res_uuids)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_d1a7914d","line":54,"in_reply_to":"5a74a57a_f5f738f3","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def test_destroy_volume_connector(self):"},{"line_number":85,"context_line":"        self.dbapi.destroy_volume_connector(self.connector.id)"},{"line_number":86,"context_line":"        self.assertRaises(exception.VolumeConnectorNotFound,"},{"line_number":87,"context_line":"                          self.dbapi.destroy_volume_connector,"},{"line_number":88,"context_line":"                          self.connector.id)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_update_volume_connector(self):"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_551aac18","line":87,"updated":"2016-11-23 01:47:34.000000000","message":"maybe this is just a nit, but you destroyed the volume connector. Seems like you\u0027d just want to do a \u0027get\u0027 to show that it doesn\u0027t exist. Instead of trying to destroy it again.\n\nAnd/or maybe you\u0027re also testing to show that you can\u0027t destroy a non-existing volume connector. Maybe just add a get_volume_connector call between the two to show that it doesn\u0027t exist.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def test_destroy_volume_connector(self):"},{"line_number":85,"context_line":"        self.dbapi.destroy_volume_connector(self.connector.id)"},{"line_number":86,"context_line":"        self.assertRaises(exception.VolumeConnectorNotFound,"},{"line_number":87,"context_line":"                          self.dbapi.destroy_volume_connector,"},{"line_number":88,"context_line":"                          self.connector.id)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_update_volume_connector(self):"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_9911bfaf","line":87,"in_reply_to":"5a74a57a_551aac18","updated":"2016-11-23 14:38:25.000000000","message":"I\u0027ve added a get_volume_connector_by_id call in between the two entries, with notes.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertNotEqual(old_connector_id, new_connector_id)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        res \u003d self.dbapi.update_volume_connector("},{"line_number":97,"context_line":"            self.connector.id,"},{"line_number":98,"context_line":"            {\u0027connector_id\u0027: new_connector_id})"},{"line_number":99,"context_line":"        self.assertEqual(new_connector_id, res.connector_id)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_ef0e7de4","line":96,"updated":"2016-11-23 01:47:34.000000000","message":"if this can also take a UUID, I\u0027d like to see a test for that too.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertNotEqual(old_connector_id, new_connector_id)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        res \u003d self.dbapi.update_volume_connector("},{"line_number":97,"context_line":"            self.connector.id,"},{"line_number":98,"context_line":"            {\u0027connector_id\u0027: new_connector_id})"},{"line_number":99,"context_line":"        self.assertEqual(new_connector_id, res.connector_id)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_5c6395b1","line":96,"in_reply_to":"5a74a57a_ef0e7de4","updated":"2016-11-23 14:38:25.000000000","message":"Done","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertRaises(exception.VolumeConnectorConnectorIdAlreadyExists,"},{"line_number":117,"context_line":"                          self.dbapi.update_volume_connector,"},{"line_number":118,"context_line":"                          volume_connector2.id,"},{"line_number":119,"context_line":"                          {\u0027connector_id\u0027: connector_id1})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_create_volume_connector_duplicated_type_connector_id(self):"},{"line_number":122,"context_line":"        self.assertRaises(exception.VolumeConnectorConnectorIdAlreadyExists,"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_6f76ed3f","line":119,"updated":"2016-11-23 01:47:34.000000000","message":"Do we want a test for update_volume_connector with an invalid id (or UUID)?","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertRaises(exception.VolumeConnectorConnectorIdAlreadyExists,"},{"line_number":117,"context_line":"                          self.dbapi.update_volume_connector,"},{"line_number":118,"context_line":"                          volume_connector2.id,"},{"line_number":119,"context_line":"                          {\u0027connector_id\u0027: connector_id1})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_create_volume_connector_duplicated_type_connector_id(self):"},{"line_number":122,"context_line":"        self.assertRaises(exception.VolumeConnectorConnectorIdAlreadyExists,"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_1cabdd75","line":119,"in_reply_to":"5a74a57a_6f76ed3f","updated":"2016-11-23 14:38:25.000000000","message":"Done, although ID only since the cross-over to support and resolve both is being repeatedly tested already.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"567a9e5c51816d0b128f2d1cc3081b2b71960d29","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                          volume_connector2.id,"},{"line_number":119,"context_line":"                          {\u0027connector_id\u0027: connector_id1})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_create_volume_connector_duplicated_type_connector_id(self):"},{"line_number":122,"context_line":"        self.assertRaises(exception.VolumeConnectorConnectorIdAlreadyExists,"},{"line_number":123,"context_line":"                          db_utils.create_test_volume_connector,"},{"line_number":124,"context_line":"                          uuid\u003duuidutils.generate_uuid(),"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_ece83d19","line":121,"updated":"2016-11-23 10:23:55.000000000","message":"Maybe another test to ensure that you can pass a specific uuid and it will be used?","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c57ebd0c06179c071c0fa4ffaaa8dee057932638","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                          uuid\u003dself.connector.uuid,"},{"line_number":133,"context_line":"                          node_id\u003dself.node.id,"},{"line_number":134,"context_line":"                          type\u003d\u0027test\u0027,"},{"line_number":135,"context_line":"                          connector_id\u003d\u0027test-connector_id-2\u0027)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_849090ee","line":135,"updated":"2016-11-23 01:47:34.000000000","message":"I have to admit, I find the ordering of the tests odd. It isn\u0027t alpha ordered. It isn\u0027t ordered by the order of the methods in api.py. It is ordered by destroy/update/create which seems backwards to me.","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6928a0327f42532822e3959160790a56da377502","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                          uuid\u003dself.connector.uuid,"},{"line_number":133,"context_line":"                          node_id\u003dself.node.id,"},{"line_number":134,"context_line":"                          type\u003d\u0027test\u0027,"},{"line_number":135,"context_line":"                          connector_id\u003d\u0027test-connector_id-2\u0027)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5a74a57a_3f9b2bcb","line":135,"in_reply_to":"5a74a57a_849090ee","updated":"2016-11-23 14:38:25.000000000","message":"Flipped the order to CRUD order :)","commit_id":"86e3178acda2925d0a031e7dc34c94765b3fe4ce"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":54,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":55,"context_line":"        self.assertEqual(self.connector.connector_id, res.connector_id)"},{"line_number":56,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":57,"context_line":"                          self.dbapi.get_volume_connector_by_id,"},{"line_number":58,"context_line":"                          -1)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_88fec369","line":56,"updated":"2016-11-23 15:37:44.000000000","message":"more specifically, exception.VolumeConnectorNotFound","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_id(self.connector.id)"},{"line_number":54,"context_line":"        self.assertEqual(self.connector.type, res.type)"},{"line_number":55,"context_line":"        self.assertEqual(self.connector.connector_id, res.connector_id)"},{"line_number":56,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":57,"context_line":"                          self.dbapi.get_volume_connector_by_id,"},{"line_number":58,"context_line":"                          -1)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_67dd0d42","line":56,"in_reply_to":"5a74a57a_88fec369","updated":"2016-11-23 19:06:30.000000000","message":"DOH!","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":61,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"},{"line_number":62,"context_line":"        self.assertEqual(self.connector.id, res.id)"},{"line_number":63,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":64,"context_line":"                          self.dbapi.get_volume_connector_by_uuid,"},{"line_number":65,"context_line":"                          -1)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_68096795","line":63,"updated":"2016-11-23 15:37:44.000000000","message":"more specifically, exception.VolumeConnectorNotFound","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f7602a3f5e8b7ae6649607007d491757013776e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_get_volume_connector_by_uuid(self):"},{"line_number":61,"context_line":"        res \u003d self.dbapi.get_volume_connector_by_uuid(self.connector.uuid)"},{"line_number":62,"context_line":"        self.assertEqual(self.connector.id, res.id)"},{"line_number":63,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":64,"context_line":"                          self.dbapi.get_volume_connector_by_uuid,"},{"line_number":65,"context_line":"                          -1)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_27d3153a","line":63,"in_reply_to":"5a74a57a_68096795","updated":"2016-11-23 19:06:30.000000000","message":"DOH!","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                connector_id\u003d\u0027iqn.test-%s\u0027 % i)"},{"line_number":86,"context_line":"            uuids.append(six.text_type(volume_connector.uuid))"},{"line_number":87,"context_line":"        # Also add the uuid for the volume_connector created in setUp()"},{"line_number":88,"context_line":"        uuids.append(six.text_type(self.connector.uuid))"},{"line_number":89,"context_line":"        res \u003d self.dbapi.get_volume_connector_list(sort_key\u003d\u0027uuid\u0027)"},{"line_number":90,"context_line":"        res_uuids \u003d [r.uuid for r in res]"},{"line_number":91,"context_line":"        self.assertEqual(sorted(uuids), res_uuids)"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_88ab2389","line":88,"updated":"2016-11-23 15:37:44.000000000","message":"sorry, i didn\u0027t mention that this and the test above share common code. wasn\u0027t sure it was worth asking for a helper function. But these two lines should be changed, similar to above L68.","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                          {\u0027uuid\u0027: \u0027\u0027})"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_update_volume_connector_fails_invalid_id(self):"},{"line_number":126,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":127,"context_line":"                          self.dbapi.update_volume_connector,"},{"line_number":128,"context_line":"                          -1,"},{"line_number":129,"context_line":"                          {\u0027node_id\u0027: \u0027\u0027})"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_c8d19bfd","line":126,"updated":"2016-11-23 15:37:44.000000000","message":"more specifically, exception.VolumeConnectorNotFound","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def test_destroy_volume_connector(self):"},{"line_number":146,"context_line":"        self.dbapi.destroy_volume_connector(self.connector.id)"},{"line_number":147,"context_line":"        # Attempt to retrieve the volume to verify it is gone."},{"line_number":148,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":149,"context_line":"                          self.dbapi.get_volume_connector_by_id,"},{"line_number":150,"context_line":"                          self.connector.id)"},{"line_number":151,"context_line":"        # Ensure that the destroy_volume_connector returns the"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_48b66bdd","line":148,"updated":"2016-11-23 15:37:44.000000000","message":"more specifically, exception.VolumeConnectorNotFound","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c5eec2e98fb53252947f93a3ba95523bd62109e","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                          self.connector.id)"},{"line_number":151,"context_line":"        # Ensure that the destroy_volume_connector returns the"},{"line_number":152,"context_line":"        # expected exception."},{"line_number":153,"context_line":"        self.assertRaises(exception.VolumeConnectorNotFound,"},{"line_number":154,"context_line":"                          self.dbapi.destroy_volume_connector,"},{"line_number":155,"context_line":"                          self.connector.id)"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_88b083df","line":153,"updated":"2016-11-23 15:37:44.000000000","message":"more specifically, exception.VolumeConnectorNotFound","commit_id":"7fdc829a3885a7d7466b648787ebea623d97c192"}],"ironic/tests/unit/db/utils.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba6ae1bde65c7b1b6795114c0b78d5529f8b66fe","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u00271be26c0b-03f2-4d2e-ae87-c02d7f33c781\u0027),"},{"line_number":287,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, 123),"},{"line_number":288,"context_line":"        \u0027type\u0027: kw.get(\u0027type\u0027, \u0027iqn\u0027),"},{"line_number":289,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, \u0027iqn.2012-06.com.example:initiator\u0027),"},{"line_number":290,"context_line":"        \u0027extra\u0027: kw.get(\u0027extra\u0027, {}),"},{"line_number":291,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":292,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_a1136465","line":289,"range":{"start_line":289,"start_character":9,"end_line":289,"end_character":14},"updated":"2016-07-19 20:31:33.000000000","message":"s/value/connector_id/g","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"5c759006d4d1617afa13bda40c26cc0e5ee4feb6","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        \u0027uuid\u0027: kw.get(\u0027uuid\u0027, \u00271be26c0b-03f2-4d2e-ae87-c02d7f33c781\u0027),"},{"line_number":287,"context_line":"        \u0027node_id\u0027: kw.get(\u0027node_id\u0027, 123),"},{"line_number":288,"context_line":"        \u0027type\u0027: kw.get(\u0027type\u0027, \u0027iqn\u0027),"},{"line_number":289,"context_line":"        \u0027value\u0027: kw.get(\u0027value\u0027, \u0027iqn.2012-06.com.example:initiator\u0027),"},{"line_number":290,"context_line":"        \u0027extra\u0027: kw.get(\u0027extra\u0027, {}),"},{"line_number":291,"context_line":"        \u0027created_at\u0027: kw.get(\u0027created_at\u0027),"},{"line_number":292,"context_line":"        \u0027updated_at\u0027: kw.get(\u0027updated_at\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_8c6f302a","line":289,"range":{"start_line":289,"start_character":9,"end_line":289,"end_character":14},"in_reply_to":"dada55a8_a1136465","updated":"2016-07-21 00:27:35.000000000","message":"Done","commit_id":"676a202c4ac877388fc39e0dc21be841ab26f7f4"}]}
