)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"f8dfeca5655fd77f528cfd2d589ee4bb138c4831","unresolved":false,"context_lines":[{"line_number":13,"context_line":"feature matches cell_mappings to specifications based on its name and"},{"line_number":14,"context_line":"will \"make-it-so\" for cell_mappings by:"},{"line_number":15,"context_line":"* create_cell (spec exists with a name not already in cell_mappings),"},{"line_number":16,"context_line":"* update_cell (name-matched spec-cell_mapping whose properties have different values),"},{"line_number":17,"context_line":"* delete_cell (when spec file does not have a matching name for existing cell)."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"There is a --dry-run argument that can be used to see what would change"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_cfa6e154","line":16,"range":{"start_line":16,"start_character":71,"end_line":16,"end_character":86},"updated":"2018-05-17 01:14:47.000000000","message":"line length","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"ee1de8b978cf7307c1dc102e000173c71a205c14","unresolved":false,"context_lines":[{"line_number":13,"context_line":"feature matches cell_mappings to specifications based on its name and"},{"line_number":14,"context_line":"will \"make-it-so\" for cell_mappings by:"},{"line_number":15,"context_line":"* create_cell (spec exists with a name not already in cell_mappings),"},{"line_number":16,"context_line":"* update_cell (name-matched spec-cell_mapping whose properties have different values),"},{"line_number":17,"context_line":"* delete_cell (when spec file does not have a matching name for existing cell)."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"There is a --dry-run argument that can be used to see what would change"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_82e50ddf","line":16,"range":{"start_line":16,"start_character":71,"end_line":16,"end_character":86},"in_reply_to":"5f7c97a3_cfa6e154","updated":"2018-05-17 19:06:42.000000000","message":"Done","commit_id":"b86865b8446d773583874078461509520238a0e1"}],"nova/cmd/manage.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"a763b475a7f69319b13cff0b35be7a1e07b0a3ad","unresolved":false,"context_lines":[{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"    @action_description("},{"line_number":1430,"context_line":"        _(\"Takes a file with a list of cell specifications and applies it to \""},{"line_number":1431,"context_line":"          \"the system. This matches a cells by name, creates cells that do \""},{"line_number":1432,"context_line":"          \"not exist, updates matched cells where information has changed, \""},{"line_number":1433,"context_line":"          \"and deletes cells that are not within this list. The result \""},{"line_number":1434,"context_line":"          \"returns the max return code from all of the functions it \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_82a3cd00","line":1431,"updated":"2018-05-17 18:24:18.000000000","message":"s/a cells/cells/","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"ee1de8b978cf7307c1dc102e000173c71a205c14","unresolved":false,"context_lines":[{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"    @action_description("},{"line_number":1430,"context_line":"        _(\"Takes a file with a list of cell specifications and applies it to \""},{"line_number":1431,"context_line":"          \"the system. This matches a cells by name, creates cells that do \""},{"line_number":1432,"context_line":"          \"not exist, updates matched cells where information has changed, \""},{"line_number":1433,"context_line":"          \"and deletes cells that are not within this list. The result \""},{"line_number":1434,"context_line":"          \"returns the max return code from all of the functions it \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a2036973","line":1431,"in_reply_to":"5f7c97a3_82a3cd00","updated":"2018-05-17 19:06:42.000000000","message":"Done","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"a763b475a7f69319b13cff0b35be7a1e07b0a3ad","unresolved":false,"context_lines":[{"line_number":1477,"context_line":"            return 1"},{"line_number":1478,"context_line":"        if not os.path.exists(cell_specs_file):"},{"line_number":1479,"context_line":"            print(_(\u0027The path specified by --cell-specs-file does not point \u0027"},{"line_number":1480,"context_line":"                    \u0027to a valid file location.\u0027))"},{"line_number":1481,"context_line":"            return 1"},{"line_number":1482,"context_line":""},{"line_number":1483,"context_line":"        # Retrieve all the specs, validate and index by name"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a2a849db","line":1480,"updated":"2018-05-17 18:24:18.000000000","message":"This is a little bit long winded. How about \"... does not exist.\"","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"c6756b882afa91ba4dfb808ad93e4011188352af","unresolved":false,"context_lines":[{"line_number":1477,"context_line":"            return 1"},{"line_number":1478,"context_line":"        if not os.path.exists(cell_specs_file):"},{"line_number":1479,"context_line":"            print(_(\u0027The path specified by --cell-specs-file does not point \u0027"},{"line_number":1480,"context_line":"                    \u0027to a valid file location.\u0027))"},{"line_number":1481,"context_line":"            return 1"},{"line_number":1482,"context_line":""},{"line_number":1483,"context_line":"        # Retrieve all the specs, validate and index by name"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_1bfe48ae","line":1480,"in_reply_to":"5f7c97a3_a2a849db","updated":"2018-05-21 16:02:11.000000000","message":"Done","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"a763b475a7f69319b13cff0b35be7a1e07b0a3ad","unresolved":false,"context_lines":[{"line_number":1483,"context_line":"        # Retrieve all the specs, validate and index by name"},{"line_number":1484,"context_line":"        specs \u003d self._parse_json_or_yaml(cell_specs_file)"},{"line_number":1485,"context_line":"        specs_by_name \u003d {}"},{"line_number":1486,"context_line":"        err \u003d 0"},{"line_number":1487,"context_line":"        for spec in specs:"},{"line_number":1488,"context_line":"            err_template \u003d _(\u0027The field %s is missing from a row in \u0027"},{"line_number":1489,"context_line":"                             \u0027--cell-specs-file\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_42adb5e8","line":1486,"updated":"2018-05-17 18:24:18.000000000","message":"Would be nice to see a bit of schema validation done here. If nothing else, a TODO to remind us. ;)","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"ee1de8b978cf7307c1dc102e000173c71a205c14","unresolved":false,"context_lines":[{"line_number":1483,"context_line":"        # Retrieve all the specs, validate and index by name"},{"line_number":1484,"context_line":"        specs \u003d self._parse_json_or_yaml(cell_specs_file)"},{"line_number":1485,"context_line":"        specs_by_name \u003d {}"},{"line_number":1486,"context_line":"        err \u003d 0"},{"line_number":1487,"context_line":"        for spec in specs:"},{"line_number":1488,"context_line":"            err_template \u003d _(\u0027The field %s is missing from a row in \u0027"},{"line_number":1489,"context_line":"                             \u0027--cell-specs-file\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c261c513","line":1486,"in_reply_to":"5f7c97a3_42adb5e8","updated":"2018-05-17 19:06:42.000000000","message":"Yeah... thinking how to do this right. I currently have the _parse_json_or_yaml raising a ValueError when it cannot parse. This should halt any further processing.\n\nI\u0027m guessing you\u0027re wanting to ensure the data returned to be a `list` and that it contains objects (dicts) with fields like database_connection, transport_url and disabled. I will add this in next patch.","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9650877bfc9bf5c4f693e6a62e8d3a26ea4e4939","unresolved":false,"context_lines":[{"line_number":1483,"context_line":"        # Retrieve all the specs, validate and index by name"},{"line_number":1484,"context_line":"        specs \u003d self._parse_json_or_yaml(cell_specs_file)"},{"line_number":1485,"context_line":"        specs_by_name \u003d {}"},{"line_number":1486,"context_line":"        err \u003d 0"},{"line_number":1487,"context_line":"        for spec in specs:"},{"line_number":1488,"context_line":"            err_template \u003d _(\u0027The field %s is missing from a row in \u0027"},{"line_number":1489,"context_line":"                             \u0027--cell-specs-file\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5d833305","line":1486,"in_reply_to":"5f7c97a3_c261c513","updated":"2018-05-20 14:06:25.000000000","message":"Agreed, it\u0027s probably a good idea to at least add a \"version\" attribute to the cell specification descriptor file. That way, you build in an ability to evolve the schema from the beginning...","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"a763b475a7f69319b13cff0b35be7a1e07b0a3ad","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"            else:"},{"line_number":1519,"context_line":"                cells_by_name[cell_mapping.name] \u003d cell_mapping"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"        # Use python set functions to determine high-level differences"},{"line_number":1522,"context_line":"        adds \u003d set(specs_by_name.keys()).difference(cells_by_name.keys())"},{"line_number":1523,"context_line":"        similars \u003d set(specs_by_name.keys()).intersection(cells_by_name.keys())"},{"line_number":1524,"context_line":"        deletes \u003d set(cells_by_name.keys()).difference(specs_by_name.keys())"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_62aa31d3","line":1521,"updated":"2018-05-17 18:24:18.000000000","message":"This use of sets is really nice.","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"ee1de8b978cf7307c1dc102e000173c71a205c14","unresolved":false,"context_lines":[{"line_number":1518,"context_line":"            else:"},{"line_number":1519,"context_line":"                cells_by_name[cell_mapping.name] \u003d cell_mapping"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"        # Use python set functions to determine high-level differences"},{"line_number":1522,"context_line":"        adds \u003d set(specs_by_name.keys()).difference(cells_by_name.keys())"},{"line_number":1523,"context_line":"        similars \u003d set(specs_by_name.keys()).intersection(cells_by_name.keys())"},{"line_number":1524,"context_line":"        deletes \u003d set(cells_by_name.keys()).difference(specs_by_name.keys())"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_027fbdab","line":1521,"in_reply_to":"5f7c97a3_62aa31d3","updated":"2018-05-17 19:06:42.000000000","message":":-)","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9650877bfc9bf5c4f693e6a62e8d3a26ea4e4939","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"                cells_by_name[cell_mapping.name] \u003d cell_mapping"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"        # Use python set functions to determine high-level differences"},{"line_number":1522,"context_line":"        adds \u003d set(specs_by_name.keys()).difference(cells_by_name.keys())"},{"line_number":1523,"context_line":"        similars \u003d set(specs_by_name.keys()).intersection(cells_by_name.keys())"},{"line_number":1524,"context_line":"        deletes \u003d set(cells_by_name.keys()).difference(specs_by_name.keys())"},{"line_number":1525,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_9d89cb27","line":1522,"range":{"start_line":1522,"start_character":32,"end_line":1522,"end_character":39},"updated":"2018-05-20 14:06:25.000000000","message":"a little trick I learned from @efried... you can skip the .keys() when passing a dict to set(). :)\n\nIn other words:\n\n set(specs_by_name) \u003d\u003d\u003d set(specs_by_name.keys())","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"ee1de8b978cf7307c1dc102e000173c71a205c14","unresolved":false,"context_lines":[{"line_number":1642,"context_line":"    @staticmethod"},{"line_number":1643,"context_line":"    def _is_disabled(cell_spec, default\u003dFalse):"},{"line_number":1644,"context_line":"        return cell_spec.get(\u0027disabled\u0027, default) in [True, \u0027true\u0027, \u0027True\u0027,"},{"line_number":1645,"context_line":"                                                      \u00271\u0027, \u0027yes\u0027, \u0027on\u0027]"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"    @staticmethod"},{"line_number":1648,"context_line":"    def _parse_json_or_yaml(file_location):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_422375bf","line":1645,"updated":"2018-05-17 19:06:42.000000000","message":"I\u0027m not sure I like the way I did this. If anyone knows of some utils library (maybe in oslo) that performs same/similar, I\u0027d be glad to use it.","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9650877bfc9bf5c4f693e6a62e8d3a26ea4e4939","unresolved":false,"context_lines":[{"line_number":1642,"context_line":"    @staticmethod"},{"line_number":1643,"context_line":"    def _is_disabled(cell_spec, default\u003dFalse):"},{"line_number":1644,"context_line":"        return cell_spec.get(\u0027disabled\u0027, default) in [True, \u0027true\u0027, \u0027True\u0027,"},{"line_number":1645,"context_line":"                                                      \u00271\u0027, \u0027yes\u0027, \u0027on\u0027]"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"    @staticmethod"},{"line_number":1648,"context_line":"    def _parse_json_or_yaml(file_location):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_7dadcf99","line":1645,"in_reply_to":"5f7c97a3_422375bf","updated":"2018-05-20 14:06:25.000000000","message":"You\u0027re looking for strutils.bool_from_string() :)\n\n from oslo_utils import strutils\n ...\n     return strutils.bool_from_string(cell_spec.get(\u0027disabled\u0027, False))\n\nhttps://github.com/openstack/oslo.utils/blob/0fb1b0aabe100bb36d0e4ad6d5a9f96dd8eb6ff6/oslo_utils/strutils.py#L114","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9650877bfc9bf5c4f693e6a62e8d3a26ea4e4939","unresolved":false,"context_lines":[{"line_number":1658,"context_line":"                parsed \u003d yaml.safe_load(fh)"},{"line_number":1659,"context_line":"        except yaml.YAMLError as e:"},{"line_number":1660,"context_line":"            raise ValueError(six.text_type(e))"},{"line_number":1661,"context_line":"        return parsed or []"},{"line_number":1662,"context_line":""},{"line_number":1663,"context_line":"    @args(\u0027--verbose\u0027, action\u003d\u0027store_true\u0027,"},{"line_number":1664,"context_line":"          help\u003d_(\u0027Show sensitive details, such as passwords\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_dd9d0367","line":1661,"updated":"2018-05-20 14:06:25.000000000","message":"For the @staticmethods above, I\u0027d recommend splitting those out into a CellSpec object and making them simple object methods.\n\nSomething like this might work, and allow you to have a bit of a cleaner interface:\n\n class CellSpec(object):\n     \"\"\"Describes a Nova cellsv2 cell.\"\"\"\n\n     _STRING_ATTRS \u003d (\n         \u0027name\u0027,\n         \u0027database_connection\u0027,\n         \u0027transport_url\u0027,\n     )\n\n     def __init__(self, filepath):\n         self.filepath \u003d filepath\n         self.name \u003d None\n         self.database_connection \u003d None\n         self.transport_url \u003d None\n         self.disabled \u003d True\n         self._load(filepath)\n\n     def _load(self):\n         try:\n             with open(self.filepath, \u0027rb\u0027) as fh:\n                 parsed \u003d yaml.safe_load(fh)\n             for attr in self._STRING_ATTRS:\n                 if attr in parsed:\n                     setattr(self, attr, parsed[name])\n             if \u0027disabled\u0027 in parsed:\n                 parsed_disabled \u003d parsed[\u0027disabled\u0027]\n                 self.disabled \u003d strutils.bool_from_string(parsed_disabled)\n         except yaml.YAMLError as e:\n             raise ...\n\n\nyou can make the masked_XXX() @staticmethods just regular old object methods of CellSpec that return dicts of the spec information, masked appropriately.","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0e1814850f586730c99e549938d15389c24d4839","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"        cells_by_name \u003d {}"},{"line_number":1557,"context_line":""},{"line_number":1558,"context_line":"        for cell_mapping in cell_mappings:"},{"line_number":1559,"context_line":"            name \u003d getattr(cell_mapping, \u0027name\u0027)"},{"line_number":1560,"context_line":"            if name is None:"},{"line_number":1561,"context_line":"                # TODO(wwriverrat) Can we find a match without raising error?"},{"line_number":1562,"context_line":"                # This will be a common occurrence for those who have used"},{"line_number":1563,"context_line":"                # simple cell setup and the initial cell\u0027s name is not set"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_bb0ee430","line":1560,"range":{"start_line":1559,"start_character":12,"end_line":1560,"end_character":28},"updated":"2018-10-10 07:53:36.000000000","message":"if not getattr(cell_mapping, \u0027name\u0027)","commit_id":"9f08eb63875c2a8325c9f51960dfa95c02d79bd5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0e1814850f586730c99e549938d15389c24d4839","unresolved":false,"context_lines":[{"line_number":1581,"context_line":"        result \u003d 0"},{"line_number":1582,"context_line":"        total_changes \u003d 0"},{"line_number":1583,"context_line":""},{"line_number":1584,"context_line":"        # TODO(wwriverrat) Consider starting txn here and commit when done?"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        # New cells. Add them."},{"line_number":1587,"context_line":"        for name in adds:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_9b13e859","line":1584,"range":{"start_line":1584,"start_character":45,"end_line":1584,"end_character":48},"updated":"2018-10-10 07:53:36.000000000","message":"what is txn?","commit_id":"9f08eb63875c2a8325c9f51960dfa95c02d79bd5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0e1814850f586730c99e549938d15389c24d4839","unresolved":false,"context_lines":[{"line_number":1584,"context_line":"        # TODO(wwriverrat) Consider starting txn here and commit when done?"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        # New cells. Add them."},{"line_number":1587,"context_line":"        for name in adds:"},{"line_number":1588,"context_line":"            cell_spec \u003d specs_by_name[name]"},{"line_number":1589,"context_line":"            if dry_run:"},{"line_number":1590,"context_line":"                print(_(\"Would have created cell %(name)s with details: \""},{"line_number":1591,"context_line":"                        \"%(msk)r\")"},{"line_number":1592,"context_line":"                      % {\u0027name\u0027: name,"},{"line_number":1593,"context_line":"                         \u0027msk\u0027: self._masked_cell_spec(cell_spec)})"},{"line_number":1594,"context_line":"            else:"},{"line_number":1595,"context_line":"                add_result \u003d self.create_cell("},{"line_number":1596,"context_line":"                    name\u003dcell_spec[\u0027name\u0027],"},{"line_number":1597,"context_line":"                    database_connection\u003dcell_spec[\u0027database_connection\u0027],"},{"line_number":1598,"context_line":"                    transport_url\u003dcell_spec[\u0027transport_url\u0027],"},{"line_number":1599,"context_line":"                    verbose\u003dverbose,"},{"line_number":1600,"context_line":"                    disabled\u003dstrutils.bool_from_string(cell_spec[\u0027disabled\u0027]))"},{"line_number":1601,"context_line":"                print(_(\"Create cell %(res)s creating cell %(name)s: %(msk)r\")"},{"line_number":1602,"context_line":"                      % {\u0027res\u0027: \u0027failed\u0027 if add_result else \u0027succeeded\u0027,"},{"line_number":1603,"context_line":"                         \u0027name\u0027: name,"},{"line_number":1604,"context_line":"                         \u0027msk\u0027: self._masked_cell_spec(cell_spec)})"},{"line_number":1605,"context_line":"                result \u003d max(result, add_result)"},{"line_number":1606,"context_line":"                total_changes +\u003d 1"},{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":"        # Cell exists but needs to compare all fields to see if updates needed"},{"line_number":1609,"context_line":"        for name in similars:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_1b6fd8c4","line":1606,"range":{"start_line":1587,"start_character":8,"end_line":1606,"end_character":34},"updated":"2018-10-10 07:53:36.000000000","message":"thinking about an edge case, what if the user \u0027accidentally\u0027 created two mapping with the same name, here we might have problem, as one is already exist, consider handling this?","commit_id":"9f08eb63875c2a8325c9f51960dfa95c02d79bd5"}],"nova/tests/fixtures.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"a763b475a7f69319b13cff0b35be7a1e07b0a3ad","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            \"database_connection\":"},{"line_number":564,"context_line":"                db_connection or \u0027mysql+pymysql://%s:%s_db@%s.2%i:5672/nova%i\u0027"},{"line_number":565,"context_line":"                                 % (user, pwd, ip_base, db_ip_base, index),"},{"line_number":566,"context_line":"            \"disabled\": disabled if disabled is not None else False,"},{"line_number":567,"context_line":"        }"},{"line_number":568,"context_line":"        # Add to db context only if ctxt is specified"},{"line_number":569,"context_line":"        if ctxt:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_02b7bd3c","line":566,"updated":"2018-05-17 18:24:18.000000000","message":"You can simplify by making the default for disabled False instead of None in the parameter list.","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"f8dfeca5655fd77f528cfd2d589ee4bb138c4831","unresolved":false,"context_lines":[{"line_number":557,"context_line":"        db_ip_base \u003d 2"},{"line_number":558,"context_line":"        spec \u003d {"},{"line_number":559,"context_line":"            \"name\": name or indexed_name,"},{"line_number":560,"context_line":"            \"transport_url\":"},{"line_number":561,"context_line":"                transport_url or \u0027rabbit://%s:%s_rmq@%s.1%i:5672\u0027"},{"line_number":562,"context_line":"                                 % (user, pwd, ip_base, xport_ip_base),"},{"line_number":563,"context_line":"            \"database_connection\":"},{"line_number":564,"context_line":"                db_connection or \u0027mysql+pymysql://%s:%s_db@%s.2%i:5672/nova%i\u0027"},{"line_number":565,"context_line":"                                 % (user, pwd, ip_base, db_ip_base, index),"},{"line_number":566,"context_line":"            \"disabled\": disabled if disabled is not None else False,"},{"line_number":567,"context_line":"        }"},{"line_number":568,"context_line":"        # Add to db context only if ctxt is specified"},{"line_number":569,"context_line":"        if ctxt:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_6f4a2d84","line":566,"range":{"start_line":560,"start_character":11,"end_line":566,"end_character":68},"updated":"2018-05-17 01:14:47.000000000","message":"too much complicated inline code","commit_id":"b86865b8446d773583874078461509520238a0e1"},{"author":{"_account_id":10962,"name":"David Bingham","email":"dbingham@godaddy.com","username":"wwriverrat"},"change_message_id":"ee1de8b978cf7307c1dc102e000173c71a205c14","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            \"database_connection\":"},{"line_number":564,"context_line":"                db_connection or \u0027mysql+pymysql://%s:%s_db@%s.2%i:5672/nova%i\u0027"},{"line_number":565,"context_line":"                                 % (user, pwd, ip_base, db_ip_base, index),"},{"line_number":566,"context_line":"            \"disabled\": disabled if disabled is not None else False,"},{"line_number":567,"context_line":"        }"},{"line_number":568,"context_line":"        # Add to db context only if ctxt is specified"},{"line_number":569,"context_line":"        if ctxt:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_45adbfe8","line":566,"in_reply_to":"5f7c97a3_02b7bd3c","updated":"2018-05-17 19:06:42.000000000","message":"Yeah... the intent of this \"test fixture\" was to have a way to add things easily (just use index and it does rest) and have the ability to override any of the \"generated\" values with a specified target value.\n\nI\u0027ll try to rework this to use less inline code for next patch.","commit_id":"b86865b8446d773583874078461509520238a0e1"}]}
