)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     jngrosso \u003cjgrosso@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-10-23 17:49:33 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"create_image_igb_start_instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Idb7b14b81b1628ef55989efee626d830e9521944"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"a8538cae_92bd0aaf","line":7,"updated":"2024-10-31 13:24:47.000000000","message":"Let\u0027s write a bit more human friendly commit message. E.g.:\n```\nCover igb vif model\n\nThis adds a test case that creates a nova instance \nwith an image requesting hw_vif_model\u003digb and verifies that\nthe proper NIC appears in the guest.\n\nblueprint: igb-vif-model\n```\nThe last line connects the commit to the launchpad blueprint for tracking https://blueprints.launchpad.net/nova/+spec/igb-vif-model","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e2602a62_d83117cb","updated":"2024-10-31 13:24:47.000000000","message":"Couple of generic comments:\n* if there is no real dependency between the two commits then please do not put them into a relation chain. It is confusing and you prevent landing this commit before its parent. Just rebased this commit top of master.\n* I suggest to use the same topic, bp/igb-vif-model , I used for the implementation so it will be easy to discover the related patches.","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"}],"tempest/api/compute/servers/test_create_server_igb.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":2,"context_line":"from tempest.lib import decorators"},{"line_number":3,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":4,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":5,"context_line":" "},{"line_number":6,"context_line":"class IgbVifModelImagePropertyTest(base.BaseV2ComputeTest):"},{"line_number":7,"context_line":" "},{"line_number":8,"context_line":" "}],"source_content_type":"text/x-python","patch_set":1,"id":"6a21a644_440df30b","line":5,"updated":"2024-10-31 13:24:47.000000000","message":"there are lines with only whitespaces. You can run tox -e pep8 locally to catch these before pushing a commit.","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":8,"context_line":" "},{"line_number":9,"context_line":"    @classmethod"},{"line_number":10,"context_line":"    def skip_checks(cls):"},{"line_number":11,"context_line":"        super(VIFModelIGBTest, cls).skip_checks()"},{"line_number":12,"context_line":"        if not CONF.compute.hw_vif_model:"},{"line_number":13,"context_line":"            raise cls.skipException(\"hw_vif_model configuration option is not set.\")"},{"line_number":14,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"24f6e3cd_08051d82","line":11,"updated":"2024-10-31 13:24:47.000000000","message":"The super call first parameter needs to be the name of the calls which is IgbVifModelImagePropertyTest. In python3 you can also simply say super().skip_checks()","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    @classmethod"},{"line_number":10,"context_line":"    def skip_checks(cls):"},{"line_number":11,"context_line":"        super(VIFModelIGBTest, cls).skip_checks()"},{"line_number":12,"context_line":"        if not CONF.compute.hw_vif_model:"},{"line_number":13,"context_line":"            raise cls.skipException(\"hw_vif_model configuration option is not set.\")"},{"line_number":14,"context_line":"    @classmethod"},{"line_number":15,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ea0bb1c_221ed7fa","line":12,"updated":"2024-10-31 13:24:47.000000000","message":"I guess we need this flag as tempest is branchless and it needs to support older nova versions that does not have hw_vif_model \u003d igb. \n* Add a comment noting that this flag can be removed when the oldest openstack version tempest supports is at least Epoxy\n* I would rename the flag to be specific to the igb model, as this flag should signal that the igb model is supported by the openstack version or not. Something like: CONF.compute_featured-enabled.igb_hw_vif_model\n* You need to also define this config flag in https://github.com/openstack/tempest/blob/98f2393641439cdde4c6873ca30ef2a4b0679a13/tempest/config.py#L463","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":17,"context_line":"        cls.client \u003d cls.images_client"},{"line_number":18,"context_line":" "},{"line_number":19,"context_line":"\t"},{"line_number":20,"context_line":"    @decorators.idempotent_id(\u00271234abcd-5678-efgh-ijkl-9012mnopqrst\u0027)"},{"line_number":21,"context_line":"\t#This is a tempest test to add an igb model to an image"},{"line_number":22,"context_line":"    def test_add_igb_vif_model_to_image(self):"},{"line_number":23,"context_line":"        # Create a new image"}],"source_content_type":"text/x-python","patch_set":1,"id":"7208b215_612bab69","line":20,"updated":"2024-10-31 13:24:47.000000000","message":"just generate a new uuid with uuidgen","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":19,"context_line":"\t"},{"line_number":20,"context_line":"    @decorators.idempotent_id(\u00271234abcd-5678-efgh-ijkl-9012mnopqrst\u0027)"},{"line_number":21,"context_line":"\t#This is a tempest test to add an igb model to an image"},{"line_number":22,"context_line":"    def test_add_igb_vif_model_to_image(self):"},{"line_number":23,"context_line":"        # Create a new image"},{"line_number":24,"context_line":"        image_name \u003d data_utils.rand_name(\u0027tempest-image\u0027)"},{"line_number":25,"context_line":"        image \u003d self.create_image(name\u003dimage_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d349c669_694f2084","line":22,"updated":"2024-10-31 13:24:47.000000000","message":"Glance does not limit the allowed image properties to a defined set of key value pairs. So this test case would pass in any openstack version regardless of igb support. So I would not add it.","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        # Verify the hw_vif_model property is set to igb"},{"line_number":36,"context_line":"        self.assertEqual(fetched_image[\u0027properties\u0027][\u0027hw_vif_model\u0027], \u0027igb\u0027)"},{"line_number":37,"context_line":" "},{"line_number":38,"context_line":"    @decorators.idempotent_id(\u0027abcdef12-3456-7890-abcd-ef1234567890\u0027)"},{"line_number":39,"context_line":"    def test_server_with_vif_model_igb(self):"},{"line_number":40,"context_line":"        \"\"\"Test launching an instance with hw_vif_model\u003digb\"\"\""},{"line_number":41,"context_line":" "}],"source_content_type":"text/x-python","patch_set":1,"id":"89f762ef_c833b57b","line":38,"updated":"2024-10-31 13:24:47.000000000","message":"uuidgen","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":41,"context_line":" "},{"line_number":42,"context_line":"        # Define the server parameters, including flavor and image"},{"line_number":43,"context_line":"        server \u003d self.create_test_server("},{"line_number":44,"context_line":"            image_id\u003dCONF.compute.image_ref,"},{"line_number":45,"context_line":"            flavor_id\u003dCONF.compute.flavor_ref,"},{"line_number":46,"context_line":"            networks\u003d[{"},{"line_number":47,"context_line":"                \u0027uuid\u0027: CONF.network.public_network_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"05d7994f_534b47a6","line":44,"updated":"2024-10-31 13:24:47.000000000","message":"you need an image that has the hw_Vif_model\u003digb property set.","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":42,"context_line":"        # Define the server parameters, including flavor and image"},{"line_number":43,"context_line":"        server \u003d self.create_test_server("},{"line_number":44,"context_line":"            image_id\u003dCONF.compute.image_ref,"},{"line_number":45,"context_line":"            flavor_id\u003dCONF.compute.flavor_ref,"},{"line_number":46,"context_line":"            networks\u003d[{"},{"line_number":47,"context_line":"                \u0027uuid\u0027: CONF.network.public_network_id,"},{"line_number":48,"context_line":"                \u0027hw_vif_model\u0027: \u0027igb\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a018d29_00b87d49","line":45,"updated":"2024-10-31 13:24:47.000000000","message":"I would assume that the baseclass defaults it At least https://github.com/openstack/tempest/blob/98f2393641439cdde4c6873ca30ef2a4b0679a13/tempest/common/compute.py#L201-L202 does so you don\u0027t have to pass it.","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":45,"context_line":"            flavor_id\u003dCONF.compute.flavor_ref,"},{"line_number":46,"context_line":"            networks\u003d[{"},{"line_number":47,"context_line":"                \u0027uuid\u0027: CONF.network.public_network_id,"},{"line_number":48,"context_line":"                \u0027hw_vif_model\u0027: \u0027igb\u0027"},{"line_number":49,"context_line":"            }],"},{"line_number":50,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027"},{"line_number":51,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"2e5ded37_5777cdab","line":48,"updated":"2024-10-31 13:24:47.000000000","message":"this is an image property not a network param.","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"526d71eeec0af2c280fc25bce4c937dc3aa4ac18","unresolved":true,"context_lines":[{"line_number":52,"context_line":" "},{"line_number":53,"context_line":"        # Verify that the server is created and the hw_vif_model is set correctly"},{"line_number":54,"context_line":"        server_details \u003d self.servers_client.show_server(server[\u0027id\u0027])[\u0027server\u0027]"},{"line_number":55,"context_line":"        self.assertEqual(server_details[\u0027hw_vif_model\u0027], \u0027igb\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"51db91f5_2a351c23","line":55,"updated":"2024-10-31 13:24:47.000000000","message":"this will not be set.\n\nWhat you can assert instead is:\n* server is ACTIVE (that is already covered by passing wait_until above)\n* when ssh into the server there is a pci device that has the vendor_idl:product_id 8086:10c9 There is example how to ssh into the guest and run commands in e.g. https://github.com/openstack/tempest/blob/98f2393641439cdde4c6873ca30ef2a4b0679a13/tempest/scenario/test_volume_boot_pattern.py#L87-L90","commit_id":"e5de0b5332fc9e3b009bd3fbe3b37283f5aa6551"}]}
