in cli_tools/gce_ovf_export/exporter/param_validator.go [46:83]
func (validator *ovfExportParamValidatorImpl) ValidateAndParseParams(params *ovfexportdomain.OVFExportArgs) error {
if params.InstanceName == "" && params.MachineImageName == "" {
return daisy.Errf("Either the flag -%v or -%v must be provided", ovfexportdomain.InstanceNameFlagKey, ovfexportdomain.MachineImageNameFlagKey)
}
if params.InstanceName != "" && params.MachineImageName != "" {
return daisy.Errf("-%v and -%v can't be provided at the same time", ovfexportdomain.InstanceNameFlagKey, ovfexportdomain.MachineImageNameFlagKey)
}
if err := validation.ValidateStringFlagNotEmpty(params.DestinationURI, ovfexportdomain.DestinationURIFlagKey); err != nil {
return err
}
if _, err := storage.GetBucketNameFromGCSPath(params.DestinationURI); err != nil {
return daisy.Errf("%v should be a path a Cloud Storage directory", ovfexportdomain.DestinationURIFlagKey)
}
if strings.HasSuffix(strings.ToLower(params.DestinationURI), ".ova") {
return daisy.Errf("Export to OVA is currently not supported")
}
if params.ReleaseTrack != "" {
isValidReleaseTrack := false
for _, vrt := range validator.validReleaseTracks {
if params.ReleaseTrack == vrt {
isValidReleaseTrack = true
}
}
if !isValidReleaseTrack {
return daisy.Errf("%v should have one of the following values: %v", ovfexportdomain.ReleaseTrackFlagKey, validator.validReleaseTracks)
}
}
if err := validator.zoneValidator.ZoneValid(params.Project, params.Zone); err != nil {
return err
}
return nil
}