Add common method for advanced image configuration

Add setup_advanced_image() to BaseTempestTestCase and update tests
to use it.

Related-Bug: OSPRH-19617
Assisted-by: Claude Code Sonnet 4.5

Change-Id: I4abea05a565061a57f71c37b98a101129cb388e2
Signed-off-by: Renjing Xiao <rxiao@redhat.com>
diff --git a/neutron_tempest_plugin/scenario/base.py b/neutron_tempest_plugin/scenario/base.py
index f7d08eb..36d15d8 100644
--- a/neutron_tempest_plugin/scenario/base.py
+++ b/neutron_tempest_plugin/scenario/base.py
@@ -269,6 +269,18 @@
         raise cls.skipTest("No L3 agent with '%s' extension enabled found." %
                            extension)
 
+    @classmethod
+    def setup_advanced_image(cls):
+        if CONF.neutron_plugin_options.default_image_is_advanced:
+            cls.flavor_ref = CONF.compute.flavor_ref
+            cls.image_ref = CONF.compute.image_ref
+            cls.username = CONF.validation.image_ssh_user
+        else:
+            cls.flavor_ref = (
+                CONF.neutron_plugin_options.advanced_image_flavor_ref)
+            cls.image_ref = CONF.neutron_plugin_options.advanced_image_ref
+            cls.username = CONF.neutron_plugin_options.advanced_image_ssh_user
+
     @removals.remove(version='Stein',
                      message="Please use create_floatingip method instead of "
                              "create_and_associate_floatingip.")
diff --git a/neutron_tempest_plugin/scenario/test_mac_learning.py b/neutron_tempest_plugin/scenario/test_mac_learning.py
index db340ed..1dca19a 100644
--- a/neutron_tempest_plugin/scenario/test_mac_learning.py
+++ b/neutron_tempest_plugin/scenario/test_mac_learning.py
@@ -79,15 +79,7 @@
     def resource_setup(cls):
         super(MacLearningTest, cls).resource_setup()
 
-        if CONF.neutron_plugin_options.default_image_is_advanced:
-            cls.flavor_ref = CONF.compute.flavor_ref
-            cls.image_ref = CONF.compute.image_ref
-            cls.username = CONF.validation.image_ssh_user
-        else:
-            cls.flavor_ref = (
-                CONF.neutron_plugin_options.advanced_image_flavor_ref)
-            cls.image_ref = CONF.neutron_plugin_options.advanced_image_ref
-            cls.username = CONF.neutron_plugin_options.advanced_image_ssh_user
+        cls.setup_advanced_image()
 
         # Setup basic topology for servers so that we can log into them
         # It's important to keep port security and DHCP disabled for this test
diff --git a/neutron_tempest_plugin/scenario/test_mtu.py b/neutron_tempest_plugin/scenario/test_mtu.py
index 29ccb01..6f4fd80 100644
--- a/neutron_tempest_plugin/scenario/test_mtu.py
+++ b/neutron_tempest_plugin/scenario/test_mtu.py
@@ -46,24 +46,12 @@
             secgroup_id=cls.secgroup['security_group']['id'])
         cls.create_pingable_secgroup_rule(
             secgroup_id=cls.secgroup['security_group']['id'])
-        if CONF.neutron_plugin_options.default_image_is_advanced:
-            cls.use_advanced_image = False
-            cls.username = CONF.validation.image_ssh_user
-        else:
-            cls.use_advanced_image = True
-            cls.username = CONF.neutron_plugin_options.advanced_image_ssh_user
+        cls.setup_advanced_image()
 
     def create_pingable_vm(self, net, keypair, secgroup):
-        if self.use_advanced_image:
-            flavor_ref = CONF.neutron_plugin_options.advanced_image_flavor_ref
-            image_ref = CONF.neutron_plugin_options.advanced_image_ref
-        else:
-            flavor_ref = CONF.compute.flavor_ref
-            image_ref = CONF.compute.image_ref
-
         server = self.create_server(
-            flavor_ref=flavor_ref,
-            image_ref=image_ref,
+            flavor_ref=self.flavor_ref,
+            image_ref=self.image_ref,
             key_name=keypair['name'],
             networks=[{'uuid': net['id']}],
             security_groups=[{'name': secgroup[
diff --git a/neutron_tempest_plugin/scenario/test_multicast.py b/neutron_tempest_plugin/scenario/test_multicast.py
index a28328b..4d79f85 100644
--- a/neutron_tempest_plugin/scenario/test_multicast.py
+++ b/neutron_tempest_plugin/scenario/test_multicast.py
@@ -150,15 +150,7 @@
     def resource_setup(cls):
         super(BaseMulticastTest, cls).resource_setup()
 
-        if CONF.neutron_plugin_options.default_image_is_advanced:
-            cls.flavor_ref = CONF.compute.flavor_ref
-            cls.image_ref = CONF.compute.image_ref
-            cls.username = CONF.validation.image_ssh_user
-        else:
-            cls.flavor_ref = (
-                CONF.neutron_plugin_options.advanced_image_flavor_ref)
-            cls.image_ref = CONF.neutron_plugin_options.advanced_image_ref
-            cls.username = CONF.neutron_plugin_options.advanced_image_ssh_user
+        cls.setup_advanced_image()
 
         # setup basic topology for servers we can log into it
         cls.network = cls.create_network()
diff --git a/neutron_tempest_plugin/scenario/test_vlan_transparency.py b/neutron_tempest_plugin/scenario/test_vlan_transparency.py
index 11ff510..b071ce0 100644
--- a/neutron_tempest_plugin/scenario/test_vlan_transparency.py
+++ b/neutron_tempest_plugin/scenario/test_vlan_transparency.py
@@ -60,13 +60,7 @@
         cls.security_group = cls.create_security_group(name=cls.rand_name)
         cls.create_loginable_secgroup_rule(cls.security_group['id'])
 
-        if CONF.neutron_plugin_options.default_image_is_advanced:
-            cls.flavor_ref = CONF.compute.flavor_ref
-            cls.image_ref = CONF.compute.image_ref
-        else:
-            cls.flavor_ref = \
-                CONF.neutron_plugin_options.advanced_image_flavor_ref
-            cls.image_ref = CONF.neutron_plugin_options.advanced_image_ref
+        cls.setup_advanced_image()
 
     @classmethod
     def skip_checks(cls):
@@ -111,12 +105,8 @@
             self.fail("Sub-port fixed IP not found on server.")
 
     def _create_ssh_client(self, floating_ip):
-        if CONF.neutron_plugin_options.default_image_is_advanced:
-            username = CONF.validation.image_ssh_user
-        else:
-            username = CONF.neutron_plugin_options.advanced_image_ssh_user
         return ssh.Client(host=floating_ip['floating_ip_address'],
-                          username=username,
+                          username=self.username,
                           pkey=self.keypair['private_key'])
 
     def _test_basic_inner_vlan_connectivity(