func NewTestWorkflow()

in testworkflow.go [755:823]


func NewTestWorkflow(opts *TestWorkflowOpts) (*TestWorkflow, error) {
	t := &TestWorkflow{}
	t.counter = 0
	t.Name = opts.Name
	t.ImageURL = opts.Image
	t.Client = opts.Client
	t.testExcludeFilter = opts.ExcludeFilter

	if opts.UseReservations {
		reservationType := "ANY_RESERVATION"
		var reservationKey string
		if len(opts.ReservationURLs) > 0 {
			reservationKey = "compute.googleapis.com/reservation-name"
			reservationType = "SPECIFIC_RESERVATION"
		}
		t.ReservationAffinity = &compute.ReservationAffinity{ConsumeReservationType: reservationType, Values: opts.ReservationURLs, Key: reservationKey}
		t.ReservationAffinityBeta = &computeBeta.ReservationAffinity{ConsumeReservationType: reservationType, Values: opts.ReservationURLs, Key: reservationKey}
		t.AcceleratorType = opts.AcceleratorType
	}

	var err error
	t.Project, err = t.Client.GetProject(opts.Project)
	if err != nil {
		return nil, err
	}
	t.Zone, err = t.Client.GetZone(t.Project.Name, opts.Zone)
	if err != nil {
		return nil, err
	}

	// Initializing Image inside the TestWorkflow
	split := strings.Split(opts.Image, "/")
	if strings.Contains(opts.Image, "family") {
		t.Image, err = t.Client.GetImageFromFamily(split[1], split[len(split)-1])
	} else {
		t.Image, err = t.Client.GetImage(split[1], split[len(split)-1])
	}

	// Initializing ImageBeta inside the TestWorkflow, this is required to provide Beta support to cvm testsuite
	if strings.Contains(opts.Image, "family") {
		t.ImageBeta, err = t.Client.GetImageFromFamilyBeta(split[1], split[len(split)-1])
	} else {
		t.ImageBeta, err = t.Client.GetImageBeta(split[1], split[len(split)-1])
	}
	if err != nil {
		return nil, err
	}
	if t.Image.Architecture == "ARM64" {
		t.MachineType, err = t.Client.GetMachineType(t.Project.Name, t.Zone.Name, opts.ARM64Shape)
	} else {
		t.MachineType, err = t.Client.GetMachineType(t.Project.Name, t.Zone.Name, opts.X86Shape)
	}
	if err != nil {
		return nil, err
	}

	t.wf = daisy.New()
	if opts.ComputeEndpointOverride != "" {
		t.wf.ComputeEndpoint = opts.ComputeEndpointOverride
	}
	t.wf.Name = strings.ReplaceAll(opts.Name, "_", "-")
	t.wf.DefaultTimeout = opts.Timeout
	t.wf.Zone = opts.Zone

	t.wf.DisableCloudLogging()
	t.wf.DisableStdoutLogging()

	return t, nil
}