2929from aleph_message .models .execution .base import Encoding , Payment , PaymentType
3030from aleph_message .models .execution .environment import (
3131 FunctionEnvironment ,
32+ HostRequirements ,
3233 HypervisorType ,
3334 InstanceEnvironment ,
3435 MachineResources ,
36+ TrustedExecutionEnvironment ,
3537)
3638from aleph_message .models .execution .instance import RootfsVolume
3739from aleph_message .models .execution .program import CodeContent , FunctionRuntime
@@ -522,10 +524,13 @@ async def create_instance(
522524 internet : bool = True ,
523525 aleph_api : bool = True ,
524526 hypervisor : Optional [HypervisorType ] = None ,
527+ confidential_firmware : Optional [ItemHash ] = None ,
528+ confidential_policy : Optional [int ] = None ,
525529 volumes : Optional [List [Mapping ]] = None ,
526530 volume_persistence : str = "host" ,
527531 ssh_keys : Optional [List [str ]] = None ,
528532 metadata : Optional [Mapping [str , Any ]] = None ,
533+ requirements : Optional [HostRequirements ] = None ,
529534 ) -> Tuple [InstanceMessage , MessageStatus ]:
530535 address = address or settings .ADDRESS_TO_USE or self .account .get_address ()
531536
@@ -536,6 +541,14 @@ async def create_instance(
536541
537542 payment = payment or Payment (chain = Chain .ETH , type = PaymentType .hold )
538543
544+ if confidential_firmware or confidential_policy :
545+ confidential_options = TrustedExecutionEnvironment (
546+ firmware = confidential_firmware ,
547+ policy = confidential_policy ,
548+ )
549+ else :
550+ confidential_options = None
551+
539552 # Default to the QEMU hypervisor for instances.
540553 selected_hypervisor : HypervisorType = hypervisor or HypervisorType .qemu
541554
@@ -546,6 +559,7 @@ async def create_instance(
546559 internet = internet ,
547560 aleph_api = aleph_api ,
548561 hypervisor = selected_hypervisor ,
562+ trusted_execution = confidential_options ,
549563 ),
550564 variables = environment_variables ,
551565 resources = MachineResources (
@@ -563,6 +577,7 @@ async def create_instance(
563577 use_latest = True ,
564578 ),
565579 volumes = [parse_volume (volume ) for volume in volumes ],
580+ requirements = requirements ,
566581 time = time .time (),
567582 authorized_keys = ssh_keys ,
568583 metadata = metadata ,
0 commit comments