@@ -14,6 +14,7 @@ import (
14
14
"kraftkit.sh/internal/set"
15
15
"kraftkit.sh/machine/firecracker"
16
16
"kraftkit.sh/store"
17
+ "kraftkit.sh/machine/xen"
17
18
)
18
19
19
20
var firecrackerV1alpha1Driver = func (ctx context.Context , opts ... any ) (machinev1alpha1.MachineService , error ) {
@@ -43,6 +44,30 @@ var firecrackerV1alpha1Driver = func(ctx context.Context, opts ...any) (machinev
43
44
)
44
45
}
45
46
47
+ var xenV1alpha1Driver = func (ctx context.Context , opts ... any ) (machinev1alpha1.MachineService , error ) {
48
+ service , err := xen .NewMachineV1alpha1Service (ctx )
49
+ if err != nil {
50
+ return nil , err
51
+ }
52
+
53
+ embeddedStore , err := store.NewEmbeddedStore [machinev1alpha1.MachineSpec , machinev1alpha1.MachineStatus ](
54
+ filepath .Join (
55
+ config.G [config.KraftKit ](ctx ).RuntimeDir ,
56
+ "machinev1alpha1" ,
57
+ ),
58
+ )
59
+ if err != nil {
60
+ return nil , err
61
+ }
62
+
63
+ return machinev1alpha1 .NewMachineServiceHandler (
64
+ ctx ,
65
+ service ,
66
+ zip .WithStore [machinev1alpha1.MachineSpec , machinev1alpha1.MachineStatus ](embeddedStore , zip .StoreRehydrationSpecNil ),
67
+ zip .WithBefore (storePlatformFilter (PlatformXen )),
68
+ )
69
+ }
70
+
46
71
func unixVariantStrategies () map [Platform ]* Strategy {
47
72
// TODO(jake-ciolek): The firecracker driver has a dependency on github.com/containernetworking/plugins/pkg/ns via
48
73
// github.com/firecracker-microvm/firecracker-go-sdk
@@ -51,5 +76,8 @@ func unixVariantStrategies() map[Platform]*Strategy {
51
76
PlatformFirecracker : {
52
77
NewMachineV1alpha1 : firecrackerV1alpha1Driver ,
53
78
},
79
+ PlatformXen : {
80
+ NewMachineV1alpha1 : xenV1alpha1Driver ,
81
+ },
54
82
}
55
83
}
0 commit comments