func()

in cli_tools/gce_ovf_export/exporter/exporter.go [143:176]


func (oe *OVFExporter) run(ctx context.Context) error {
	oe.Logger.User("Starting OVF export.")
	if oe.params.Timeout.Nanoseconds() > 0 {
		var cancel func()
		ctx, cancel = context.WithTimeout(ctx, oe.params.Timeout)
		defer cancel()
	}

	//TODO: if machine image export, create instance from machine image and add it to cleanup

	instance, err := oe.computeClient.GetInstance(oe.params.Project, oe.params.Zone, oe.params.InstanceName)
	if err != nil {
		return daisy.Errf("Error retrieving instance `%v`: %v", oe.params.InstanceName, err)
	}
	defer func() {
		oe.cleanup(instance, err)
	}()
	if err = oe.prepare(ctx, instance); err != nil {
		return err
	}
	if err := oe.exportDisks(ctx, instance); err != nil {
		return err
	}
	if err := oe.inspectBootDisk(ctx); err != nil {
		return err
	}
	if err = oe.generateDescriptor(ctx, instance); err != nil {
		return err
	}
	if err = oe.generateManifest(ctx); err != nil {
		return err
	}
	return nil
}