func NewOVFExporter()

in cli_tools/gce_ovf_export/exporter/exporter.go [68:108]


func NewOVFExporter(params *ovfexportdomain.OVFExportArgs, logger logging.ToolLogger) (*OVFExporter, error) {
	ctx := context.Background()

	storageClient, err := storageutils.NewStorageClient(ctx, logger)
	if err != nil {
		return nil, err
	}
	computeClient, err := createComputeClient(&ctx, params)
	if err != nil {
		return nil, err
	}
	metadataGCE := &computeutils.MetadataGCE{}

	paramValidator := NewOvfExportParamValidator(computeClient)
	paramPopulator := NewPopulator(computeClient, metadataGCE, storageClient,
		storageutils.NewResourceLocationRetriever(metadataGCE, computeClient),
		storageutils.NewScratchBucketCreator(ctx, storageClient),
	)
	if err := validateAndPopulateParams(params, paramValidator, paramPopulator); err != nil {
		return nil, err
	}
	inspector, err := commondisk.NewInspector(params.EnvironmentSettings("ovf-export-disk-inspect"), logger)
	if err != nil {
		return nil, daisy.Errf("Error creating disk inspector: %v", err)
	}
	return &OVFExporter{
		storageClient:          storageClient,
		computeClient:          computeClient,
		mgce:                   metadataGCE,
		bucketIteratorCreator:  &storageutils.BucketIteratorCreator{},
		Logger:                 logger,
		params:                 params,
		loggableBuilder:        service.NewOvfExportLoggableBuilder(),
		ovfDescriptorGenerator: NewOvfDescriptorGenerator(computeClient, storageClient, params.Project, params.Zone),
		manifestFileGenerator:  NewManifestFileGenerator(storageClient),
		inspector:              inspector,
		instanceDisksExporter:  NewInstanceDisksExporter(computeClient, storageClient, logger),
		instanceExportPreparer: NewInstanceExportPreparer(logger),
		instanceExportCleaner:  NewInstanceExportCleaner(logger),
	}, nil
}