func ValidateParams()

in pkg/api/deploymentapi/deputil/deputil.go [42:94]


func ValidateParams(params Validator) error {
	if params == nil {
		return errors.New("params cannot be nil")
	}

	var valueParams = reflect.ValueOf(params)
	if reflect.Ptr == reflect.ValueOf(params).Kind() {
		valueParams = valueParams.Elem()
	}

	var valid bool
	var merr = multierror.NewPrefixed("deployment params")
	if field := valueParams.FieldByName("API"); field.IsValid() {
		valid = true
		v, ok := field.Interface().(*api.API)
		if ok && v == nil {
			merr = merr.Append(apierror.ErrMissingAPI)
		}
		if !ok {
			merr = merr.Append(
				errors.New("field API must be of type *github.com/elastic/cloud-sdk-go/pkg/api.API"),
			)
		}
	}

	if field := valueParams.FieldByName("ID"); field.IsValid() {
		valid = true
		id, ok := field.Interface().(string)
		if ok && len(id) != 32 {
			merr = merr.Append(NewInvalidDeploymentIDError(id))
		}
		if !ok {
			merr = merr.Append(errors.New("field ID must be of type string"))
		}
	}

	if field := valueParams.FieldByName("ClusterID"); field.IsValid() {
		valid = true
		id, ok := field.Interface().(string)
		if ok && len(id) != 32 {
			merr = merr.Append(NewInvalidDeploymentIDError(id))
		}
		if !ok {
			merr = merr.Append(errors.New("field ClusterID must be of type string"))
		}
	}

	if !valid {
		return errors.New("params must have one of API or ID")
	}

	return merr.ErrorOrNil()
}