)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                            display_description\u003dname,"},{"line_number":924,"context_line":"                            key_name\u003dkey_name,"},{"line_number":925,"context_line":"                            metadata\u003dserver_dict.get(\u0027metadata\u0027, {}),"},{"line_number":926,"context_line":"                            driver_metadata\u003d"},{"line_number":927,"context_line":"                                    server_dict.get(\u0027driver_metadata\u0027, {}),"},{"line_number":928,"context_line":"                            access_ip_v4\u003daccess_ip_v4,"},{"line_number":929,"context_line":"                            access_ip_v6\u003daccess_ip_v6,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt9c%3D","line":926,"updated":"2014-01-22 20:44:30.000000000","message":"doesn\u0027t this need () or \\ for line continuation?","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1dde92154e739e5685aeb35fefc7c58cf901be73","unresolved":false,"context_lines":[{"line_number":928,"context_line":"                            key_name\u003dkey_name,"},{"line_number":929,"context_line":"                            metadata\u003dserver_dict.get(\u0027metadata\u0027, {}),"},{"line_number":930,"context_line":"                            driver_metadata\u003d"},{"line_number":931,"context_line":"                                    server_dict.get(\u0027driver_metadata\u0027, {}),"},{"line_number":932,"context_line":"                            access_ip_v4\u003daccess_ip_v4,"},{"line_number":933,"context_line":"                            access_ip_v6\u003daccess_ip_v6,"},{"line_number":934,"context_line":"                            injected_files\u003dinjected_files,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BDfg%3D","line":931,"updated":"2014-01-30 16:20:30.000000000","message":"This should only be done if the corresponding API extension is loaded.","commit_id":"e6eaf7054cee1a228bbd098ecf685c78e0403eeb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8d7cbec17b62ac7ff31f2f4fa999902bf110c1f1","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                context, \u0027compute_extension:os-virt-properties\u0027,"},{"line_number":930,"context_line":"                {\u0027project_id\u0027: context.project_id, \u0027user_id\u0027: context.user_id},"},{"line_number":931,"context_line":"                False):"},{"line_number":932,"context_line":"            virt_properties \u003d server_dict.get(\u0027virt_properties\u0027, {})"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        try:"},{"line_number":935,"context_line":"            _get_inst_type \u003d flavors.get_flavor_by_flavor_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2Fpxs%3D","line":932,"updated":"2014-03-04 20:50:11.000000000","message":"Looks like you\u0027re filtering the properties later in the chain, which I don\u0027t think is what we want. First, it means that changing that method affects the public api in a not-so-visible way. And Second, it means that we don\u0027t get a chance (AFAICT) to return \"sorry, but no\" to the client making the request since it happens late. So, I think the filtering/rejection needs to be done here.","commit_id":"75778f02815c104d41184c140038516c4ffdc32d"}],"nova/compute/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            image_service.show(context, kernel_id)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        if ramdisk_id is not None:"},{"line_number":497,"context_line":"            import pdb;pdb.set_trace()"},{"line_number":498,"context_line":"            image_service, ramdisk_id \u003d glance.get_remote_image_service("},{"line_number":499,"context_line":"                context, ramdisk_id)"},{"line_number":500,"context_line":"            image_service.show(context, ramdisk_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bxvc%3D","line":497,"updated":"2014-01-22 08:55:24.000000000","message":"not needed","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":"    @hooks.add_hook(\"create_instance\")"},{"line_number":1235,"context_line":"    def create(self, context, instance_type,"},{"line_number":1236,"context_line":"               image_href, kernel_id\u003dNone, ramdisk_id\u003dNone, driver_metadata\u003dNone,"},{"line_number":1237,"context_line":"               min_count\u003dNone, max_count\u003dNone,"},{"line_number":1238,"context_line":"               display_name\u003dNone, display_description\u003dNone,"},{"line_number":1239,"context_line":"               key_name\u003dNone, key_data\u003dNone, security_group\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BxvQ%3D","line":1236,"updated":"2014-01-22 08:55:24.000000000","message":"should be the last parameter added","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        return self._create_instance("},{"line_number":1260,"context_line":"                               context, instance_type,"},{"line_number":1261,"context_line":"                               image_href, kernel_id, ramdisk_id, driver_metadata,"},{"line_number":1262,"context_line":"                               min_count, max_count,"},{"line_number":1263,"context_line":"                               display_name, display_description,"},{"line_number":1264,"context_line":"                               key_name, key_data, security_group,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BxvY%3D","line":1261,"updated":"2014-01-22 08:55:24.000000000","message":"why is this not added as the last parameter?","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":1600,"context_line":""},{"line_number":1601,"context_line":"    values[\u0027system_metadata\u0027] \u003d _metadata_refs("},{"line_number":1602,"context_line":"            values.get(\u0027system_metadata\u0027), models.InstanceSystemMetadata)"},{"line_number":1603,"context_line":"    values[\u0027driver_metadata\u0027] \u003d _metadata_refs("},{"line_number":1604,"context_line":"                values.get(\u0027driver_metadata\u0027), models.InstanceDriverMetadata)"},{"line_number":1605,"context_line":"    _handle_objects_related_type_conversions(values)"},{"line_number":1606,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BxvI%3D","line":1603,"updated":"2014-01-22 08:55:24.000000000","message":"i do not recall seeing any database tests for this","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":2302,"context_line":"                                               models.InstanceSystemMetadata,"},{"line_number":2303,"context_line":"                                               values.pop(\u0027system_metadata\u0027),"},{"line_number":2304,"context_line":"                                               session)"},{"line_number":2305,"context_line":"        #not sure about this!!!!"},{"line_number":2306,"context_line":"        driver_metadata \u003d values.get(\u0027driver_metadata\u0027)"},{"line_number":2307,"context_line":"        if driver_metadata is not None:"},{"line_number":2308,"context_line":"            _instance_metadata_update_in_place(context, instance_ref,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt90%3D","line":2305,"updated":"2014-01-22 20:44:30.000000000","message":"Add a NOTE(xxx): for this...where xxx is your IRC nick.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d622603b16f66dc580fae6e87e317019beb69da1","unresolved":false,"context_lines":[{"line_number":1739,"context_line":"            options(joinedload_all(\u0027security_groups.rules\u0027)).\\"},{"line_number":1740,"context_line":"            options(joinedload(\u0027info_cache\u0027))"},{"line_number":1741,"context_line":"    if columns_to_join is None:"},{"line_number":1742,"context_line":"        columns_to_join \u003d [\u0027metadata\u0027, \u0027system_metadata\u0027, \u0027driver_metadata\u0027]"},{"line_number":1743,"context_line":"    for column in columns_to_join:"},{"line_number":1744,"context_line":"        if column in [\u0027info_cache\u0027, \u0027security_groups\u0027]:"},{"line_number":1745,"context_line":"            # Already always joined above"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BJ3k%3D","line":1742,"updated":"2014-01-29 16:37:43.000000000","message":"I don\u0027t think we want to almost always join driver_metadata, do we? If we join it whenever we join system_metadata, we might as well just use it to stash these details and avoid a ton of complication this patch brings.","commit_id":"e38089871acdc6d2c37a8868823ef6dec5c47982"}],"nova/db/sqlalchemy/migrate_repo/versions/230_Add_driver_metadata.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    # instance_metadata"},{"line_number":36,"context_line":"    index \u003d Index(\u0027instance_driver_metadata_instance_uuid_idx\u0027, instance_driver_metadata.c.instance_uuid)"},{"line_number":37,"context_line":"    index.create()"},{"line_number":38,"context_line":"    "},{"line_number":39,"context_line":"    fkey_pair \u003d [[instance_driver_metadata.c.instance_uuid], [instances.c.uuid], \u0027instance_driver_metadata_instance_uuid_fkey\u0027]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    if migrate_engine.name \u003d\u003d \u0027mysql\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BxwE%3D","line":38,"updated":"2014-01-22 08:55:24.000000000","message":"whitesapce","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"def downgrade(migrate_engine):"},{"line_number":77,"context_line":"    # Operations to reverse the above upgrade."},{"line_number":78,"context_line":"    meta \u003d MetaData(bind\u003dmigrate_engine)"},{"line_number":79,"context_line":"    #index \u003d Index(\u0027instance_driver_metadata_instance_uuid_idx\u0027)"},{"line_number":80,"context_line":"    #index.drop()"},{"line_number":81,"context_line":"    instance_driver_metadata \u003d Table(\u0027instance_driver_metadata\u0027, meta, autoload\u003dTrue)"},{"line_number":82,"context_line":"    instance_driver_metadata.drop()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bxvs%3D","line":79,"updated":"2014-01-22 08:55:24.000000000","message":"do we need these comments?","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt%2BM%3D","line":1,"updated":"2014-01-22 20:44:30.000000000","message":"You need a migration test for this in test_migrations.\n\nThink you\u0027re using the wrong year in the copyright also...","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                                \u0027InstanceMetadata.deleted \u003d\u003d 0)\u0027)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"class InstanceDriverMetadata(BASE, NovaBase):"},{"line_number":971,"context_line":"    \"\"\"Represents a user-provided metadata key/value pair for a driver to use "},{"line_number":972,"context_line":"    when launching an instance.\"\"\""},{"line_number":973,"context_line":"    __tablename__ \u003d \u0027instance_driver_metadata\u0027"},{"line_number":974,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BxwI%3D","line":971,"updated":"2014-01-22 08:55:24.000000000","message":"whitespace","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"}],"nova/objects/instance.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0a470e90de5caf5b51847fd4f0e325cda00ffbb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    # Version 1.8: \u0027security_groups\u0027 and \u0027pci_devices\u0027 cannot be None"},{"line_number":73,"context_line":"    # Version 1.9: Make uuid a non-None real string"},{"line_number":74,"context_line":"    # Version 1.10: Added use_slave to refresh and get_by_uuid"},{"line_number":75,"context_line":"    # Version 1.11: Update instance from database during destroy"},{"line_number":76,"context_line":"    VERSION \u003d \u00271.11\u0027"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BuAs%3D","line":75,"updated":"2014-01-22 20:35:57.000000000","message":"You need to bump the version.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0a470e90de5caf5b51847fd4f0e325cda00ffbb","unresolved":false,"context_lines":[{"line_number":578,"context_line":"    # Version 1.1: Added use_slave to get_by_host"},{"line_number":579,"context_line":"    #              Instance \u003c\u003d version 1.9"},{"line_number":580,"context_line":"    # Version 1.2: Instance \u003c\u003d version 1.11"},{"line_number":581,"context_line":"    # Version 1.3: Added use_slave to get_by_filters"},{"line_number":582,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BuAY%3D","line":581,"updated":"2014-01-22 20:35:57.000000000","message":"Might also need to bump the version here and in the child_versions mapping below, see https://review.openstack.org/#/c/61544/.\n\nDan Smith or Chris Behrens would know for sure on the rules here.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7c8f0098655d4570dcbede33652dfa63b3aad39e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    # Version 1.8: \u0027security_groups\u0027 and \u0027pci_devices\u0027 cannot be None"},{"line_number":73,"context_line":"    # Version 1.9: Make uuid a non-None real string"},{"line_number":74,"context_line":"    # Version 1.10: Added use_slave to refresh and get_by_uuid"},{"line_number":75,"context_line":"    # Version 1.11: Update instance from database during destroy"},{"line_number":76,"context_line":"    VERSION \u003d \u00271.11\u0027"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BJ4o%3D","line":75,"updated":"2014-01-29 16:35:51.000000000","message":"Version needs to be updated.","commit_id":"e38089871acdc6d2c37a8868823ef6dec5c47982"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d622603b16f66dc580fae6e87e317019beb69da1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    # Version 1.8: \u0027security_groups\u0027 and \u0027pci_devices\u0027 cannot be None"},{"line_number":73,"context_line":"    # Version 1.9: Make uuid a non-None real string"},{"line_number":74,"context_line":"    # Version 1.10: Added use_slave to refresh and get_by_uuid"},{"line_number":75,"context_line":"    # Version 1.11: Update instance from database during destroy"},{"line_number":76,"context_line":"    VERSION \u003d \u00271.11\u0027"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BJ4Q%3D","line":75,"updated":"2014-01-29 16:37:43.000000000","message":"You can\u0027t add things to instance without bumping the version.","commit_id":"e38089871acdc6d2c37a8868823ef6dec5c47982"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7c8f0098655d4570dcbede33652dfa63b3aad39e","unresolved":false,"context_lines":[{"line_number":578,"context_line":"    # Version 1.1: Added use_slave to get_by_host"},{"line_number":579,"context_line":"    #              Instance \u003c\u003d version 1.9"},{"line_number":580,"context_line":"    # Version 1.2: Instance \u003c\u003d version 1.11"},{"line_number":581,"context_line":"    # Version 1.3: Added use_slave to get_by_filters"},{"line_number":582,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BJ4k%3D","line":581,"updated":"2014-01-29 16:35:51.000000000","message":"This would also need to be bumped.","commit_id":"e38089871acdc6d2c37a8868823ef6dec5c47982"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7c8f0098655d4570dcbede33652dfa63b3aad39e","unresolved":false,"context_lines":[{"line_number":583,"context_line":""},{"line_number":584,"context_line":"    fields \u003d {"},{"line_number":585,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027Instance\u0027),"},{"line_number":586,"context_line":"    }"},{"line_number":587,"context_line":"    child_versions \u003d {"},{"line_number":588,"context_line":"        \u00271.1\u0027: \u00271.9\u0027,"},{"line_number":589,"context_line":"        # NOTE(danms): Instance was at 1.9 before we added this"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BJ4c%3D","line":586,"updated":"2014-01-29 16:35:51.000000000","message":"And this.","commit_id":"e38089871acdc6d2c37a8868823ef6dec5c47982"}],"nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":230,"context_line":"  \u003c/extension\u003e"},{"line_number":231,"context_line":"  \u003cextension alias\u003d\"os-baremetal-ext-status\" updated\u003d\"%(timestamp)s\" namespace\u003d\"http://docs.openstack.org/compute/ext/baremetal_ext_status/api/v2\" name\u003d\"BareMetalExtStatus\"\u003e    \u003cdescription\u003e%(text)s\u003c/description\u003e"},{"line_number":232,"context_line":"  \u003c/extension\u003e"},{"line_number":233,"context_line":"  \u003cextension alias\u003d\"os-driver-metadata\" updated\u003d\"%(timestamp)s\" namespace\u003d\"http://docs.openstack.org/compute/ext/driver-metadata/api/v2\" name\u003d\"DriverMetadata\"\u003e    "},{"line_number":234,"context_line":"    \u003cdescription\u003e%(text)s\u003c/description\u003e"},{"line_number":235,"context_line":"  \u003c/extension\u003e"},{"line_number":236,"context_line":"\u003c/extensions\u003e"}],"source_content_type":"text/x-smarty","patch_set":1,"id":"AAAAUH%2F%2BxwY%3D","line":233,"updated":"2014-01-22 08:55:24.000000000","message":"white space","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":230,"context_line":"  \u003c/extension\u003e"},{"line_number":231,"context_line":"  \u003cextension alias\u003d\"os-baremetal-ext-status\" updated\u003d\"%(timestamp)s\" namespace\u003d\"http://docs.openstack.org/compute/ext/baremetal_ext_status/api/v2\" name\u003d\"BareMetalExtStatus\"\u003e    \u003cdescription\u003e%(text)s\u003c/description\u003e"},{"line_number":232,"context_line":"  \u003c/extension\u003e"},{"line_number":233,"context_line":"  \u003cextension alias\u003d\"os-driver-metadata\" updated\u003d\"%(timestamp)s\" namespace\u003d\"http://docs.openstack.org/compute/ext/driver-metadata/api/v2\" name\u003d\"DriverMetadata\"\u003e    "},{"line_number":234,"context_line":"    \u003cdescription\u003e%(text)s\u003c/description\u003e"},{"line_number":235,"context_line":"  \u003c/extension\u003e"},{"line_number":236,"context_line":"\u003c/extensions\u003e"}],"source_content_type":"text/x-smarty","patch_set":2,"id":"AAAAUH%2F%2Bt%2Bo%3D","line":233,"updated":"2014-01-22 20:44:30.000000000","message":"fix whitespace","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":2828,"context_line":"        return self._post_server()"},{"line_number":2829,"context_line":""},{"line_number":2830,"context_line":""},{"line_number":2831,"context_line":"class DriverMetadataJsonTest(ServersSampleBase):"},{"line_number":2832,"context_line":"    extension_name \u003d (\u0027nova.api.openstack.compute.contrib.\u0027"},{"line_number":2833,"context_line":"                      \u0027driver_metadata.\u0027"},{"line_number":2834,"context_line":"                      \u0027Driver_metadata\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt%2Bw%3D","line":2831,"updated":"2014-01-22 20:44:30.000000000","message":"This should come after BlockDeviceMappingV2BootXmlTest since the json/xml tests are grouped together, and you should have a sister xml test for this class.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"}],"nova/utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":895,"context_line":"def instance_driver_meta(instance):"},{"line_number":896,"context_line":"    if not instance.get(\u0027driver_metadata\u0027):"},{"line_number":897,"context_line":"        return {}"},{"line_number":898,"context_line":"    if isinstance(instance[\u0027driver_metadata\u0027], dict):"},{"line_number":899,"context_line":"        return instance[\u0027driver_metadata\u0027]"},{"line_number":900,"context_line":"    else:"},{"line_number":901,"context_line":"        return metadata_to_dict(instance[\u0027driver_metadata\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt%2FY%3D","line":898,"updated":"2014-01-22 20:44:30.000000000","message":"Treat instance as an object and use the dot notation here.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":896,"context_line":"    if not instance.get(\u0027driver_metadata\u0027):"},{"line_number":897,"context_line":"        return {}"},{"line_number":898,"context_line":"    if isinstance(instance[\u0027driver_metadata\u0027], dict):"},{"line_number":899,"context_line":"        return instance[\u0027driver_metadata\u0027]"},{"line_number":900,"context_line":"    else:"},{"line_number":901,"context_line":"        return metadata_to_dict(instance[\u0027driver_metadata\u0027])"},{"line_number":902,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt%2FQ%3D","line":899,"updated":"2014-01-22 20:44:30.000000000","message":"And here.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    if isinstance(instance[\u0027driver_metadata\u0027], dict):"},{"line_number":899,"context_line":"        return instance[\u0027driver_metadata\u0027]"},{"line_number":900,"context_line":"    else:"},{"line_number":901,"context_line":"        return metadata_to_dict(instance[\u0027driver_metadata\u0027])"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"def get_wrapped_function(function):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt%2FM%3D","line":901,"updated":"2014-01-22 20:44:30.000000000","message":"And here.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8d7cbec17b62ac7ff31f2f4fa999902bf110c1f1","unresolved":false,"context_lines":[{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":"def get_virt_properties(virt_properties):"},{"line_number":1070,"context_line":"    allowed_properties \u003d [\u0027os_command_line\u0027, \u0027hw_qemu_guest_agent\u0027,"},{"line_number":1071,"context_line":"            \u0027vmware_linked_clone\u0027]"},{"line_number":1072,"context_line":"    clean_virt_props \u003d {}"},{"line_number":1073,"context_line":"    if virt_properties is not None:"},{"line_number":1074,"context_line":"        for key in virt_properties:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAVn%2F%2FpzM%3D","line":1071,"updated":"2014-03-04 20:50:11.000000000","message":"I really don\u0027t think we should allow any of the virt-specific properties into this. So, either coerce hw_qemu_guest_agent into os_guest_agent and fix the libvirt driver, or drop it. Same for the vmware_ one, although I think it\u0027s even less clear what to do there.\n\nWhen I said \"how about the booleans, I thought there were other genericy ones we could expose, but I see now that I was mistaken.","commit_id":"75778f02815c104d41184c140038516c4ffdc32d"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4ee7e9fa4ac64b2ac3d3bc2dd9b953e40b873df0","unresolved":false,"context_lines":[{"line_number":3090,"context_line":"                image_meta.get(\u0027properties\u0027, {}).get(\u0027os_command_line\u0027)):"},{"line_number":3091,"context_line":"            guest.os_cmdline \u003d \\"},{"line_number":3092,"context_line":"                    image_meta[\u0027properties\u0027].get(\u0027os_command_line\u0027)"},{"line_number":3093,"context_line":"        #import pdb;pdb.set_trace()"},{"line_number":3094,"context_line":"        if ((CONF.libvirt.virt_type !\u003d \"lxc\" and"},{"line_number":3095,"context_line":"             CONF.libvirt.virt_type !\u003d \"uml\")):"},{"line_number":3096,"context_line":"            guest.acpi \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bxww%3D","line":3093,"updated":"2014-01-22 08:55:24.000000000","message":"please remove this comment","commit_id":"ced5e6c7fe52fb8413f97dc35f9bf67d11823d69"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0197a94a122aeaf66ceb766bb01ab42c78dc7392","unresolved":false,"context_lines":[{"line_number":3091,"context_line":"            guest.os_cmdline \u003d \\"},{"line_number":3092,"context_line":"                    image_meta[\u0027properties\u0027].get(\u0027os_command_line\u0027)"},{"line_number":3093,"context_line":""},{"line_number":3094,"context_line":"        if instance.driver_metadata and\\"},{"line_number":3095,"context_line":"                instance.driver_metadata.get(\u0027os_command_line\u0027):"},{"line_number":3096,"context_line":"            guest.os_cmdline \u003d instance.driver_metadata.get(\u0027os_command_line\u0027)"},{"line_number":3097,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bt%2Fg%3D","line":3094,"updated":"2014-01-22 20:44:30.000000000","message":"Use parenthesis to wrap lines.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8bfc9665a2ae13b22ef68907f8738bc8f769b019","unresolved":false,"context_lines":[{"line_number":3093,"context_line":""},{"line_number":3094,"context_line":"        if instance.driver_metadata and\\"},{"line_number":3095,"context_line":"                instance.driver_metadata.get(\u0027os_command_line\u0027):"},{"line_number":3096,"context_line":"            guest.os_cmdline \u003d instance.driver_metadata.get(\u0027os_command_line\u0027)"},{"line_number":3097,"context_line":""},{"line_number":3098,"context_line":"        if ((CONF.libvirt.virt_type !\u003d \"lxc\" and"},{"line_number":3099,"context_line":"             CONF.libvirt.virt_type !\u003d \"uml\")):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BuyM%3D","line":3096,"updated":"2014-01-22 18:08:29.000000000","message":"As a general rule we will likely want anything that can be set at the image level, to also support setting at the driver level. Rather than having drivers check both all the time, which will no doubt lead to errors, we could add a helper method\n\neg\n\n    def get_instance_prop(name, instance, image_meta\u003dNone, defvalue\u003dNone):\n       if instance.driver_metadata and instance.driver_metadata.get(name):\n          return instance.driver_metadata.get(name)\n\n       if image_meta and image_meta.get(name):\n          return image_meta.get(name)\n\n       return defvalue\n\nto be used like\n\n   guest.os_cmdline \u003d get_instance_prop(\"os_command_line\", instance, image_meta)\n\nwe\u0027d want this in some module that is shared across virt drivers, not tied to libvirt only","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"},{"author":{"_account_id":7750,"name":"Dennis Kliban","email":"dkliban@redhat.com","username":"dkliban"},"change_message_id":"1da546752f27325059ea1a32a03436d57fff065e","unresolved":false,"context_lines":[{"line_number":3093,"context_line":""},{"line_number":3094,"context_line":"        if instance.driver_metadata and\\"},{"line_number":3095,"context_line":"                instance.driver_metadata.get(\u0027os_command_line\u0027):"},{"line_number":3096,"context_line":"            guest.os_cmdline \u003d instance.driver_metadata.get(\u0027os_command_line\u0027)"},{"line_number":3097,"context_line":""},{"line_number":3098,"context_line":"        if ((CONF.libvirt.virt_type !\u003d \"lxc\" and"},{"line_number":3099,"context_line":"             CONF.libvirt.virt_type !\u003d \"uml\")):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BuvE%3D","line":3096,"in_reply_to":"AAAAUH%2F%2BuyM%3D","updated":"2014-01-22 18:20:21.000000000","message":"I completely agree.  I actually did not mean to commit this file, as I modified it to be a test of the new metadata.","commit_id":"4936dea41a1104bdf5f4407de36090a7c1db11cf"}]}
