func()

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
}