diff --git a/.rubocop.yml b/.rubocop.yml
index a420c7601ee04d8d79b25e18d844c56a8f784b13..64ee3b7b32983023ef0b883b2567800fbfb617fe 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -11,3 +11,5 @@ Metrics/CyclomaticComplexity:
   Enabled: false
 Metrics/PerceivedComplexity:
   Enabled: false
+Metrics/MethodLength:
+  Max: 15
diff --git a/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb b/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb
index ab1e6c3a0c4920092c3bb06e2f039a16ecdafaf8..0e3490b5f1e7e708d08b0b851928de4730a6e9a7 100644
--- a/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb
+++ b/app/models/concerns/foreman_vmware_advanced/vmware_extensions.rb
@@ -15,20 +15,7 @@ module ForemanVmwareAdvanced
       return unless vm
 
       spec = {}
-      if vm.firmware == 'efi'
-        if SETTINGS[:vmware_secureboot] && args[:guest_id]&.start_with?('win')
-          spec[:bootOptions] = RbVmomi::VIM::VirtualMachineBootOptions.new(efiSecureBootEnabled: true)
-        end
-
-        if SETTINGS[:vmware_vtpm]
-          spec[:deviceChange] = [
-            {
-              operation: :add,
-              device: RbVmomi::VIM::VirtualTPM.new(key: -1)
-            }
-          ]
-        end
-      end
+      spec.merge! build_efi_spec(args) if vm.firmware == 'efi'
 
       return vm if spec.empty?
 
@@ -40,5 +27,25 @@ module ForemanVmwareAdvanced
 
       vm
     end
+
+    private
+
+    def build_efi_spec(args)
+      spec = {}
+
+      spec[:bootOptions] = RbVmomi::VIM::VirtualMachineBootOptions.new(efiSecureBootEnabled: true) \
+        if SETTINGS[:vmware_secureboot] && args[:guest_id]&.start_with?('win')
+
+      if SETTINGS[:vmware_vtpm]
+        spec[:deviceChange] = [
+          {
+            operation: :add,
+            device: RbVmomi::VIM::VirtualTPM.new(key: -1)
+          }
+        ]
+      end
+
+      spec
+    end
   end
 end