@@ -21,9 +21,11 @@ def snapshot_fxt(microvm_factory, guest_kernel_linux_5_10, rootfs, secret_free):
21
21
basevm .add_net_iface ()
22
22
23
23
# Add a memory balloon.
24
- basevm .api .balloon .put (
25
- amount_mib = 0 , deflate_on_oom = True , stats_polling_interval_s = 0
26
- )
24
+ # Note: Secret Free VMs do not support ballooning as of now.
25
+ if not secret_free :
26
+ basevm .api .balloon .put (
27
+ amount_mib = 0 , deflate_on_oom = True , stats_polling_interval_s = 0
28
+ )
27
29
28
30
basevm .start ()
29
31
@@ -82,6 +84,15 @@ def test_unbinded_socket(uvm_plain, snapshot):
82
84
vm .mark_killed ()
83
85
84
86
87
+ def has_balloon_device (microvm ):
88
+ """
89
+ Check if a balloon device is present in the Firecracker microVM.
90
+ """
91
+ response = microvm .api .vm_config .get ()
92
+ config = response .json ()
93
+ return config .get ("balloon" )
94
+
95
+
85
96
def test_valid_handler (uvm_plain , snapshot ):
86
97
"""
87
98
Test valid uffd handler scenario.
@@ -91,14 +102,16 @@ def test_valid_handler(uvm_plain, snapshot):
91
102
vm .spawn ()
92
103
vm .restore_from_snapshot (snapshot , resume = True , uffd_handler_name = "on_demand" )
93
104
94
- # Inflate balloon.
95
- vm .api .balloon .patch (amount_mib = 200 )
105
+ # Secret Free VMs do not support ballooning so the balloon device is not added to them.
106
+ if has_balloon_device (vm ):
107
+ # Inflate balloon.
108
+ vm .api .balloon .patch (amount_mib = 200 )
96
109
97
- # Verify if the restored guest works.
98
- vm .ssh .check_output ("true" )
110
+ # Verify if the restored guest works.
111
+ vm .ssh .check_output ("true" )
99
112
100
- # Deflate balloon.
101
- vm .api .balloon .patch (amount_mib = 0 )
113
+ # Deflate balloon.
114
+ vm .api .balloon .patch (amount_mib = 0 )
102
115
103
116
# Verify if the restored guest works.
104
117
vm .ssh .check_output ("true" )
0 commit comments