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
}