aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/gce
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gce')
-rw-r--r--pkg/gce/gce.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/pkg/gce/gce.go b/pkg/gce/gce.go
index 4e797ade6..542cf1650 100644
--- a/pkg/gce/gce.go
+++ b/pkg/gce/gce.go
@@ -43,6 +43,12 @@ type Context struct {
apiRateGate <-chan time.Time
}
+type CreateArgs struct {
+ Preemptible bool
+ DisplayDevice bool
+ NestedVirt bool
+}
+
func NewContext(customZoneID string) (*Context, error) {
ctx := &Context{
apiRateGate: time.NewTicker(time.Second).C,
@@ -103,7 +109,7 @@ func NewContext(customZoneID string) (*Context, error) {
}
func (ctx *Context) CreateInstance(name, machineType, image, sshkey string,
- preemptible, displayDevice bool) (string, error) {
+ args CreateArgs) (string, error) {
prefix := "https://www.googleapis.com/compute/v1/projects/" + ctx.ProjectID
sshkeyAttr := "syzkaller:" + sshkey
oneAttr := "1"
@@ -143,11 +149,14 @@ func (ctx *Context) CreateInstance(name, machineType, image, sshkey string,
},
Scheduling: &compute.Scheduling{
AutomaticRestart: &falseAttr,
- Preemptible: preemptible,
+ Preemptible: args.Preemptible,
OnHostMaintenance: "TERMINATE",
},
DisplayDevice: &compute.DisplayDevice{
- EnableDisplay: displayDevice,
+ EnableDisplay: args.DisplayDevice,
+ },
+ AdvancedMachineFeatures: &compute.AdvancedMachineFeatures{
+ EnableNestedVirtualization: args.NestedVirt,
},
}
retry: