diff --git a/SoftLayer/CLI/formatting.py b/SoftLayer/CLI/formatting.py
index 9c32318d..fb91ded6 100644
--- a/SoftLayer/CLI/formatting.py
+++ b/SoftLayer/CLI/formatting.py
@@ -259,8 +259,7 @@ def no_going_back(confirmation):
     if not confirmation:
         confirmation = 'yes'
 
-    prompt = ('This action cannot be undone! Type "%s" or press Enter '
-              'to abort' % confirmation)
+    prompt = f"This action cannot be undone! Type '{confirmation}' or press Enter to abort"
 
     ans = click.prompt(prompt, default='', show_default=False)
     if ans.lower() == str(confirmation):
diff --git a/SoftLayer/CLI/hardware/update_firmware.py b/SoftLayer/CLI/hardware/update_firmware.py
index 6b634376..96e82b9b 100644
--- a/SoftLayer/CLI/hardware/update_firmware.py
+++ b/SoftLayer/CLI/hardware/update_firmware.py
@@ -12,15 +12,23 @@
 
 @click.command(cls=SoftLayer.CLI.command.SLCommand, )
 @click.argument('identifier')
+@click.option('-i', '--ipmi', is_flag=True, help="Update IPMI firmware")
+@click.option('-r', '--raid', is_flag=True, help="Update RAID firmware")
+@click.option('-b', '--bios', is_flag=True, help="Update BIOS firmware")
+@click.option('-d', '--harddrive', is_flag=True, help="Update Hard Drives firmware")
+@click.option('-n', '--network', is_flag=True, help="Update Network Card firmware")
 @environment.pass_env
-def cli(env, identifier):
-    """Update server firmware."""
+def cli(env, identifier, ipmi, raid, bios, harddrive, network):
+    """Update server firmware. By default will update all available server components."""
 
     mgr = SoftLayer.HardwareManager(env.client)
     hw_id = helpers.resolve_id(mgr.resolve_ids, identifier, 'hardware')
-    if not (env.skip_confirmations or
-            formatting.confirm('This will power off the server with id %s and '
-                               'update device firmware. Continue?' % hw_id)):
+    confirm_message = f"This will power off the server with id {hw_id} and update device firmware. Continue?"
+    if not (env.skip_confirmations or formatting.confirm(confirm_message)):
         raise exceptions.CLIAbort('Aborted.')
 
-    mgr.update_firmware(hw_id)
+    # If no options were specified, set them all to enabled.
+    if not any([ipmi, raid, bios, harddrive, network]):
+        ipmi = raid = bios = harddrive = network = 1
+    mgr.update_firmware(hw_id, ipmi, raid, bios, harddrive, network)
+    env.fout(f"[green]Firmware update for {identifier} started")
diff --git a/SoftLayer/managers/hardware.py b/SoftLayer/managers/hardware.py
index a59e7244..69add1cf 100644
--- a/SoftLayer/managers/hardware.py
+++ b/SoftLayer/managers/hardware.py
@@ -723,22 +723,23 @@ def edit(self, hardware_id, userdata=None, hostname=None, domain=None,
 
         return self.hardware.editObject(obj, id=hardware_id)
 
-    def update_firmware(self,
-                        hardware_id,
-                        ipmi=True,
-                        raid_controller=True,
-                        bios=True,
-                        hard_drive=True):
+    def update_firmware(self, hardware_id: int,
+                        ipmi: bool = True,
+                        raid_controller: bool = True,
+                        bios: bool = True,
+                        hard_drive: bool = True,
+                        network: bool = True):
         """Update hardware firmware.
 
         This will cause the server to be unavailable for ~20 minutes.
+        https://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/createFirmwareUpdateTransaction/
 
-        :param int hardware_id: The ID of the hardware to have its firmware
-                                updated.
+        :param int hardware_id: The ID of the hardware to have its firmware updated.
         :param bool ipmi: Update the ipmi firmware.
         :param bool raid_controller: Update the raid controller firmware.
         :param bool bios: Update the bios firmware.
         :param bool hard_drive: Update the hard drive firmware.
+        :param bool network: Update the network card firmware
 
         Example::
 
@@ -746,21 +747,22 @@ def update_firmware(self,
             result = mgr.update_firmware(hardware_id=1234)
         """
 
-        return self.hardware.createFirmwareUpdateTransaction(
-            bool(ipmi), bool(raid_controller), bool(bios), bool(hard_drive), id=hardware_id)
+        return self.client.call(
+            'SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+            bool(ipmi), bool(raid_controller), bool(bios), bool(hard_drive), bool(network), id=hardware_id
+        )
 
-    def reflash_firmware(self,
-                         hardware_id,
-                         ipmi=True,
-                         raid_controller=True,
-                         bios=True):
+    def reflash_firmware(self, hardware_id: int,
+                         ipmi: bool = True,
+                         raid_controller: bool = True,
+                         bios: bool = True,):
         """Reflash hardware firmware.
 
         This will cause the server to be unavailable for ~60 minutes.
         The firmware will not be upgraded but rather reflashed to the version installed.
+        https://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/createFirmwareReflashTransaction/
 
-        :param int hardware_id: The ID of the hardware to have its firmware
-                                reflashed.
+        :param int hardware_id: The ID of the hardware to have its firmware reflashed.
         :param bool ipmi: Reflash the ipmi firmware.
         :param bool raid_controller: Reflash the raid controller firmware.
         :param bool bios: Reflash the bios firmware.

diff --git a/tests/CLI/modules/hardware/hardware_basic_tests.py b/tests/CLI/modules/hardware/hardware_basic_tests.py
index 61135fa4..d7c2ca9b 100644
--- a/tests/CLI/modules/hardware/hardware_basic_tests.py
+++ b/tests/CLI/modules/hardware/hardware_basic_tests.py
@@ -498,26 +498,6 @@ def test_edit_server_userfile(self):
             self.assert_called_with('SoftLayer_Hardware_Server', 'setUserMetadata',
                                     args=(['some data'],), identifier=1000)
 
-    @mock.patch('SoftLayer.CLI.formatting.confirm')
-    def test_update_firmware(self, confirm_mock):
-        confirm_mock.return_value = True
-        result = self.run_command(['server', 'update-firmware', '1000'])
-
-        self.assert_no_fail(result)
-        self.assertEqual(result.output, "")
-        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
-                                args=((1, 1, 1, 1)), identifier=1000)
-
-    @mock.patch('SoftLayer.CLI.formatting.confirm')
-    def test_reflash_firmware(self, confirm_mock):
-        confirm_mock.return_value = True
-        result = self.run_command(['server', 'reflash-firmware', '1000'])
-
-        self.assert_no_fail(result)
-        self.assertEqual(result.output, 'Successfully device firmware reflashed\n')
-        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareReflashTransaction',
-                                args=((1, 1, 1)), identifier=1000)
-
     def test_edit(self):
         result = self.run_command(['server', 'edit',
                                    '--domain=example.com',
diff --git a/tests/CLI/modules/hardware/hardware_firmware_tests.py b/tests/CLI/modules/hardware/hardware_firmware_tests.py
new file mode 100644
index 00000000..cc71c488
--- /dev/null
+++ b/tests/CLI/modules/hardware/hardware_firmware_tests.py
@@ -0,0 +1,109 @@
+"""
+    SoftLayer.tests.CLI.modules.hardware.hardware_firmware_tests
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    This suite is for the firmware related tests.
+
+    :license: MIT, see LICENSE for more details.
+"""
+from SoftLayer.CLI import exceptions
+from SoftLayer import testing
+from unittest import mock as mock
+
+
+class HardwareFirmwareTests(testing.TestCase):
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000'])
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((1, 1, 1, 1, 1)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_just_ipmi(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000', '-i'])
+
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((1, 0, 0, 0, 0)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_just_raid(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000', '-r'])
+
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((0, 1, 0, 0, 0)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_just_bios(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000', '-b'])
+
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((0, 0, 1, 0, 0)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_just_disk(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000', '-d'])
+
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((0, 0, 0, 1, 0)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_just_nic(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000', '-n'])
+
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((0, 0, 0, 0, 1)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_just_all(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'update-firmware', '1000', '-i', '-r', '-b', '-d', '-n'])
+
+        self.assert_no_fail(result)
+        self.assertIn("Firmware update for 1000 started", result.output)
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
+                                args=((1, 1, 1, 1, 1)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_update_firmware_no_confirm(self, confirm_mock):
+        confirm_mock.return_value = False
+
+        result = self.run_command(['server', 'update-firmware', '1000'])
+        self.assertEqual(result.exit_code, 2)
+        self.assertIsInstance(result.exception, exceptions.CLIAbort)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_reflash_firmware(self, confirm_mock):
+        confirm_mock.return_value = True
+        result = self.run_command(['server', 'reflash-firmware', '1000'])
+
+        self.assert_no_fail(result)
+        self.assertEqual(result.output, 'Successfully device firmware reflashed\n')
+        self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareReflashTransaction',
+                                args=((1, 1, 1)), identifier=1000)
+
+    @mock.patch('SoftLayer.CLI.formatting.confirm')
+    def test_reflash_firmware_no_confirm(self, confirm_mock):
+        confirm_mock.return_value = False
+
+        result = self.run_command(['server', 'reflash-firmware', '1000'])
+        self.assertEqual(result.exit_code, 2)
+        self.assertIsInstance(result.exception, exceptions.CLIAbort)
diff --git a/tests/managers/hardware_tests.py b/tests/managers/hardware_tests.py
index c6175d07..c067dd08 100644
--- a/tests/managers/hardware_tests.py
+++ b/tests/managers/hardware_tests.py
@@ -543,14 +543,14 @@ def test_update_firmware(self):
 
         self.assertEqual(result, True)
         self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
-                                identifier=100, args=(1, 1, 1, 1))
+                                identifier=100, args=(1, 1, 1, 1, 1))
 
     def test_update_firmware_selective(self):
         result = self.hardware.update_firmware(100, ipmi=False, hard_drive=False)
 
         self.assertEqual(result, True)
         self.assert_called_with('SoftLayer_Hardware_Server', 'createFirmwareUpdateTransaction',
-                                identifier=100, args=(0, 1, 1, 0))
+                                identifier=100, args=(0, 1, 1, 0, 1))
 
     def test_reflash_firmware(self):
         result = self.hardware.reflash_firmware(100)

Slcli hardware update-firmware should do networkcards too now
https://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/createFirmwareUpdateTransaction/ has an option for networkCards now, need to support that
tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_just_all tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_just_bios tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_just_disk tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_just_ipmi tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_just_nic tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_just_raid tests/managers/hardware_tests.py::HardwareTests::test_update_firmware tests/managers/hardware_tests.py::HardwareTests::test_update_firmware_selective
tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_add_notification tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_authorize_hw tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_authorize_hw_empty tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_authorize_hw_no_confirm tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_bandwidth_hw tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_bandwidth_hw_quite tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_billing tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_cancel_server tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_check_for_closing tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_components tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_credential tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_hw_no_confirm tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_options tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_options_location tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_options_prices tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_server tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_server_test_flag tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_server_with_export tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_create_server_with_router tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_detail_drives tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_detail_empty_allotment tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_detail_vs_empty_tag tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_dns_sync_both tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_dns_sync_edit_a tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_dns_sync_edit_ptr tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_dns_sync_misc_exception tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_dns_sync_v6 tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_edit tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_edit_server_failed tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_edit_server_userdata tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_edit_server_userdata_and_file tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_edit_server_userfile tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_going_ready tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_hardware_cancel_no_force tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_hardware_storage tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_harware_power_off_force tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_harware_power_on_force tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_list_hw_search_noargs tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_list_hw_search_noargs_domain tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_list_servers tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_monitoring tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_not_ready tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_notification_delete tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_notifications tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_ready tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_rescue tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_sensor tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_sensor_discrete tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_cancel_reasons tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_credentials tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_credentials_exception_password_not_found tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_credentials_exception_passwords_not_found tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_details tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_power_cycle tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_power_cycle_negative tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_power_off tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_power_on tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_reboot_default tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_reboot_hard tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_reboot_negative tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_reboot_soft tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_reload tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_server_rescue_negative tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_toggle_ipmi_off tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_toggle_ipmi_on tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_aborted tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_add_disk tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_disk_already_exist tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_disk_does_not_exist tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_disk_not_price_found tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_no_options tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_resize_disk tests/CLI/modules/hardware/hardware_basic_tests.py::HardwareCLITests::test_upgrade_test tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_reflash_firmware tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_reflash_firmware_no_confirm tests/CLI/modules/hardware/hardware_firmware_tests.py::HardwareFirmwareTests::test_update_firmware_no_confirm tests/managers/hardware_tests.py::HardwareTests::test_add_notification tests/managers/hardware_tests.py::HardwareTests::test_authorize_storage tests/managers/hardware_tests.py::HardwareTests::test_authorize_storage_empty tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardware tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardware_monthly_now tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardware_monthly_whenever tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardware_no_billing_item tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardware_with_reason_and_comment tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardware_without_reason tests/managers/hardware_tests.py::HardwareTests::test_cancel_hardwareno_billing_item_or_ticket tests/managers/hardware_tests.py::HardwareTests::test_cancel_running_transaction tests/managers/hardware_tests.py::HardwareTests::test_change_port_speed_private tests/managers/hardware_tests.py::HardwareTests::test_change_port_speed_public tests/managers/hardware_tests.py::HardwareTests::test_clear_vlan tests/managers/hardware_tests.py::HardwareTests::test_create_credential tests/managers/hardware_tests.py::HardwareTests::test_edit tests/managers/hardware_tests.py::HardwareTests::test_edit_blank tests/managers/hardware_tests.py::HardwareTests::test_edit_meta tests/managers/hardware_tests.py::HardwareTests::test_generate_create_dict tests/managers/hardware_tests.py::HardwareTests::test_generate_create_dict_by_router_network_component tests/managers/hardware_tests.py::HardwareTests::test_generate_create_dict_network_key tests/managers/hardware_tests.py::HardwareTests::test_generate_create_dict_no_regions tests/managers/hardware_tests.py::HardwareTests::test_get_bandwidth_allocation tests/managers/hardware_tests.py::HardwareTests::test_get_bandwidth_allocation_no_allotment tests/managers/hardware_tests.py::HardwareTests::test_get_bandwidth_allocation_with_allotment tests/managers/hardware_tests.py::HardwareTests::test_get_bandwidth_data tests/managers/hardware_tests.py::HardwareTests::test_get_components tests/managers/hardware_tests.py::HardwareTests::test_get_create_options tests/managers/hardware_tests.py::HardwareTests::test_get_create_options_package_missing tests/managers/hardware_tests.py::HardwareTests::test_get_create_options_prices tests/managers/hardware_tests.py::HardwareTests::test_get_create_options_prices_by_location tests/managers/hardware_tests.py::HardwareTests::test_get_hard_drive_empty tests/managers/hardware_tests.py::HardwareTests::test_get_hard_drives tests/managers/hardware_tests.py::HardwareTests::test_get_hardware tests/managers/hardware_tests.py::HardwareTests::test_get_hardware_fast tests/managers/hardware_tests.py::HardwareTests::test_get_hardware_item_prices tests/managers/hardware_tests.py::HardwareTests::test_get_none_storage_credentials tests/managers/hardware_tests.py::HardwareTests::test_get_price_id_disk_capacity tests/managers/hardware_tests.py::HardwareTests::test_get_price_id_memory_capacity tests/managers/hardware_tests.py::HardwareTests::test_get_price_id_mismatch_capacity tests/managers/hardware_tests.py::HardwareTests::test_get_software_component tests/managers/hardware_tests.py::HardwareTests::test_get_storage_credentials tests/managers/hardware_tests.py::HardwareTests::test_get_storage_iscsi_details tests/managers/hardware_tests.py::HardwareTests::test_get_storage_iscsi_empty_details tests/managers/hardware_tests.py::HardwareTests::test_get_storage_nas_details tests/managers/hardware_tests.py::HardwareTests::test_get_storage_nas_empty_details tests/managers/hardware_tests.py::HardwareTests::test_get_tracking_id tests/managers/hardware_tests.py::HardwareTests::test_init_with_ordering_manager tests/managers/hardware_tests.py::HardwareTests::test_list_hardware tests/managers/hardware_tests.py::HardwareTests::test_list_hardware_with_filters tests/managers/hardware_tests.py::HardwareTests::test_notification tests/managers/hardware_tests.py::HardwareTests::test_notification_del tests/managers/hardware_tests.py::HardwareTests::test_place_order tests/managers/hardware_tests.py::HardwareTests::test_reflash_firmware tests/managers/hardware_tests.py::HardwareTests::test_reflash_firmware_selective tests/managers/hardware_tests.py::HardwareTests::test_reload tests/managers/hardware_tests.py::HardwareTests::test_remove_vlan tests/managers/hardware_tests.py::HardwareTests::test_rescue tests/managers/hardware_tests.py::HardwareTests::test_resolve_ids_hostname tests/managers/hardware_tests.py::HardwareTests::test_resolve_ids_ip tests/managers/hardware_tests.py::HardwareTests::test_sensor tests/managers/hardware_tests.py::HardwareTests::test_trunk_vlan tests/managers/hardware_tests.py::HardwareTests::test_upgrade tests/managers/hardware_tests.py::HardwareTests::test_upgrade_add_disk tests/managers/hardware_tests.py::HardwareTests::test_upgrade_blank tests/managers/hardware_tests.py::HardwareTests::test_upgrade_full tests/managers/hardware_tests.py::HardwareTests::test_upgrade_resize_disk tests/managers/hardware_tests.py::HardwareTests::test_verify_order tests/managers/hardware_tests.py::HardwareHelperTests::test_bandwidth_key tests/managers/hardware_tests.py::HardwareHelperTests::test_is_bonded tests/managers/hardware_tests.py::HardwareHelperTests::test_is_private tests/managers/hardware_tests.py::HardwareHelperTests::test_matches_location tests/managers/hardware_tests.py::HardwareHelperTests::test_port_speed_key tests/managers/hardware_tests.py::HardwareHelperTests::test_port_speed_key_exception